我知道,只匹配數字字母和空間,我可以使用:Python中使用正則表達式匹配數字,字母,空格和字符括號
re.match(r'[A-Za-z0-9 ]+$', word)
,但我想也括號,如()
,{}
,[]
。我將以上正則表達式擴展爲:
re.match(r'[A-Z][a-z][0-9][ ][(][)][{][}][[][]]]+$', word)
但這不起作用。
任何想法是什麼問題?或者是否有我可以參考的簡明正則表達式指南?
我知道,只匹配數字字母和空間,我可以使用:Python中使用正則表達式匹配數字,字母,空格和字符括號
re.match(r'[A-Za-z0-9 ]+$', word)
,但我想也括號,如()
,{}
,[]
。我將以上正則表達式擴展爲:
re.match(r'[A-Z][a-z][0-9][ ][(][)][{][}][[][]]]+$', word)
但這不起作用。
任何想法是什麼問題?或者是否有我可以參考的簡明正則表達式指南?
的r'[A-Z][a-z][0-9][ ][(][)][{][}][[][]]]+$'
的圖案的序列定義相符: - 大寫ASCII字母
[a-z]
- 小寫ASCII字母[0-9]
- ASCII數字[ ]
-
[A-Z]
的空間[(]
- 一個(
[)]
- 一個)
[{]
- 一個{
[}]
- 一個}
[[]
- 一個[
[]]
- 一個]
]+
- 一個或多個]
S(因爲它是一個獨立的量化原子)。$
- 字符串結尾。 re.match(r'[A-Za-z0-9(){}[\]]+$', word)
^^^^^^^
注意(
,)
,{
,}
和[
不需要內部逸出:
字符串你只需將它們添加到字符類匹配角色類。該]
不具有當字符類開始投入進行轉義:
re.match(r'[][A-Za-z0-9(){}]+$', word)
在非Java字符類,唯一的特殊字符轉義\
,
破折號-
,插入符號^
,以及右括號]
。
那些點 -
如果光標不是在一開始,這是一個文字,
之初,它的否定。
如果破折號在開頭或結尾是一個文字,中間是
,它是一個範圍運算符。
如果右括號位於插入符的開頭或右邊,
後面沒有右括號,它是一個未封閉的類,是一個錯誤。
當你想到這一切,你頭將爆炸。
從保存自己並遵循這些簡單的規則:
總是逃避字面括號[
和]
無論他們在哪裏。
不管它在哪裏,總是跳過字面短劃痕-
。
始終在所有其他字符的右側放置文字插入符號^
。
沒有別的東西需要轉義。
實例:[a-z(){}\-\[\]^]
和[^a-z(){}\-\[\]^]
供參考:在IDEONE演示,你可以看到,'打印(re.match(R '[] [A-ZA-Z0-9(){}] + $' ,「123 [777] a(A)9(more words)[here]]]] {{{0}}}」))'打印一個匹配,從而匹配字符串中的任意位置*按照您的表達方式按特定順序排列。 –
非常感謝!非常清晰,簡潔易懂! –