我有一個錯誤的正則表達式如何獲得正則表達式的優先級?
([A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]*\.)
我需要接受像字符串:
a-b.
ab.
a.
,但我不需要在這個字符串 - a-.
我應該改變什麼?
我有一個錯誤的正則表達式如何獲得正則表達式的優先級?
([A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]*\.)
我需要接受像字符串:
a-b.
ab.
a.
,但我不需要在這個字符串 - a-.
我應該改變什麼?
[A-Za-z0-9]+\.|[A-Za-z0-9]+-?[A-Za-z0-9]\.
的理念是:
-?
- 可選破折號\.
- 逃脫點,以匹配字面點|
- 交替(一個或其他)x+
- 一個或多個重複,相當於xx*
如果你不介意匹配強調過,你可以使用word character set:
\w+\.|\w+-?\w\.
我已經理解了這個想法。好方法!=)非常感謝你來自俄羅斯) –
您可以通過使用可選組嘗試這樣的。
"(?i)[A-Z0-9](?:-?[A-Z0-9]+)*\\."
(?i)
標誌區分大小寫匹配。[A-Z0-9]
一個字母數字字符(?:-?[A-Z0-9]+)*
後面跟着一個或多個alnum )
\.
字面點(?:
一個可選的連字符任何金額See demo at Regexplanet(單擊Java)
非常感謝你。這是什麼意思 '?:' ? –
@ E.Simchuk歡迎! '(?:'啓動一個[非捕獲組](http://stackoverflow.com/questions/3512471/what-is-a-non-capturing-group)。 –
@ E.Simchuk,'(?:)''與'()'基本相同,它只是不捕獲組。就匹配而言,它並沒有什麼不同。 – ndn
試着在regex101上調試它 – Marged
你能用簡單的英語解釋正則表達式的規則是什麼嗎? –
'[A-Za-z0-9](?: - [A-Za-z0-9 \ - ])* [A-Za-z0-9] * \。' –