我有一个错误的正则表达式如何获得正则表达式的优先级?
([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] * \。' –