正則表達式爲什麼這個正則表達式匹配任何
\\(?:[[email protected]]+|.)
用於乳膠語法高亮TEXworks的。
爲什麼此表達式與\
之外的任何內容相匹配?據我所知,前瞻不匹配任何東西(只檢查條件是否爲真)。該表達式用於匹配通常爲\command
的Latex命令,但在正則表達式中也有特殊字符\%,\|,...
,因此.
。
有人可以解釋爲什麼嗎?
正則表達式爲什麼這個正則表達式匹配任何
\\(?:[[email protected]]+|.)
用於乳膠語法高亮TEXworks的。
爲什麼此表達式與\
之外的任何內容相匹配?據我所知,前瞻不匹配任何東西(只檢查條件是否爲真)。該表達式用於匹配通常爲\command
的Latex命令,但在正則表達式中也有特殊字符\%,\|,...
,因此.
。
有人可以解釋爲什麼嗎?
?:
是一個非捕獲組。 ?=
是一個前瞻。 (?:)
的原因是,|
適用於[[email protected]]
和.
。如果沒有(?:)
|
將適用於\\[[email protected]]
和.
。這將匹配任何字符串(因爲.
將始終匹配),而不僅僅是具有\
的字符串(關於匹配的更多詳細信息如下)。由於這只是一個邏輯分組來指定|
的範圍,因此不需要保留捕獲組,這就是爲什麼使用?:
的原因。
望着正則表達式:
\\
手段開始與\
匹配。現在,該字符串不需要以\
來匹配。正則表達式將匹配\abc
,但它也將匹配字符串a\abc
,在這兩種情況下匹配結果將爲\abc
。
[[email protected]]+
- +
表示一個或多個。所以它匹配[]
中的一個或多個字符。這意味着字符串如\a
,\abc
,\[email protected]
將匹配
|
表示OR。
.
是任何單個字符(默認情況下不是新行)。這意味着字符串如\a
,\#
,\,
將匹配。所以\
之後的第一個字符可以是任何字符,但是如果它不匹配[[email protected]]+
那麼匹配只會匹配第一個字符。例如\#a
只會匹配\#
。
匹配,其中匹配結果突出顯示的實例:
\[email protected]
\[email protected]
\[email protected]
#a的\#
ABC @\#
ABC @#一個(?:)
移除這些字符串會匹配)的字符串210個
例子
在給定的正則表達式,
\\(?:[[email protected]]+|.)
()
是一組操作符。正則表達式將組運算符內的條目視爲一個單位。
所以正則表達式接受等,
\.
,\|
,\a
等。
而且正則表達式將不接受\
作爲這樣的字符串。
單元在這裏意味着什麼?這只是爲了表現還是改變了行爲(這裏)。我找到了將選項插入到該組中的方法,這很有道理,但由於這裏沒有選項,此表達式與「\\ [A-Za-z @] + |。」是否有所不同? – ratatosk
模式只會匹配\
和任何直接跟隨它的字符。
(?:[[email protected]]+|.)
.
匹配任何字符(除換行符)。有沒有前瞻,here's a list of expressions作爲參考。
'(?:...)'不是前瞻。這是一個非捕獲組。 – Jerry