我尝试编写一个正则表达式来匹配以下内容:
act=MATCHME
act=Match me too
我有以下正则表达式来匹配其中之一,但不能匹配两者。这是我的努力:
matches MATCHME: act=(\w+)
matches Match me too: (\w+\s\w+\s\w+)
有没有办法可以用 OR 将两者结合起来,或者我可能看错了?
我正在使用 JAVA 正则表达式引擎。
最佳答案
您可以使用可选的非捕获组:
act=(\w+(?:\s+\w+\s+\w+)?)
^^^^^^^^^^^^^^^^^
请参阅regex demo
?
匹配 1 次或 0 次出现的量化子模式。当它应用于分组构造时,量化将应用于整个模式序列,因此 (?:\s+\w+\s+\w+)?
匹配 1 或0 个 1+ 空格序列、1+ 单词字符、1+ 空格以及 1+ 单词字符。
如果您需要捕获 act=
之后的 2 个单词的子字符串,您可以进一步对模式进行分割。
关于java - 带有空格的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42810712/