我尝试编写一个正则表达式来匹配以下内容:
act=MATCHME
act=Match me too
我有以下正则表达式匹配任何一个但不是两个。这是我的努力:
matches MATCHME: act=(\w+)
matches Match me too: (\w+\s\w+\s\w+)
无论如何可以将两者合并为OR,或者我可能会看错了吗?
我正在使用JAVA正则表达式引擎。
答案 0 :(得分:2)
您可以使用可选的非捕获组:
act=(\w+(?:\s+\w+\s+\w+)?)
^^^^^^^^^^^^^^^^^
请参阅regex demo
?
匹配量化子模式的1或0次出现。当它应用于分组构造时,量化应用于整个模式序列,因此(?:\s+\w+\s+\w+)?
匹配1或1个空格,1 +个字符,1 +个空格的1或0个序列再加上1个字的字符。
如果您需要在act=
之后捕获2个字的子串,则可以进一步细分该模式。
答案 1 :(得分:0)
当然,您知道如何通过alternation撰写正则表达式。
答案 2 :(得分:0)
这个正则表达式可以帮助你
^[a-zA-Z ]*$