我正在尝试在序列后提取文本。但是我有多个序列。理想情况下,正则表达式应与任何这些序列中的第一个匹配。
我的序列是
PIN, PIN :, PIN IN, PIN IN:, PIN OUT,PIN OUT :
所以我想出了以下正则表达式
(PIN)(\sOUT|\sIN)?\:?\s*
除了正则表达式也匹配
之类的字符串外,它的工作是正常的引用羽扇豆,皮平等。
我的问题是如何严格选择与整个单词模式匹配的字符串
注意:我尝试了^(PIN)(\sOUT|\sON)?\:?\s*
,但没有用。
我是Java新手,不胜感激
答案 0 :(得分:2)
在使用正则表达式时,总是建议手头the documentation。
在Boundary matchers下,我们发现:
\b
字边界
因此,您可以使用模式\bPIN(\sOUT|\sIN)?:?\s*
来强制PIN
仅在单词的开头匹配,即位于字符串/行的开头,或者以非单词字符开头,例如空格或标点符号。边界仅匹配位置,而不匹配字符,因此,如果前面的非单词字符将其作为单词边界,则该字符仍不属于匹配项。
请注意,第一个(…)
分组对于文字匹配PIN
来说是不必要的,此外,冒号:
没有特殊含义,不需要转义。