Reg Ex严格匹配以模式开头的单词

时间:2019-11-14 04:31:36

标签: java regex string

我正在尝试在序列后提取文本。但是我有多个序列。理想情况下,正则表达式应与任何这些序列中的第一个匹配。

我的序列是

PIN, PIN :, PIN IN, PIN IN:, PIN OUT,PIN OUT :

所以我想出了以下正则表达式

(PIN)(\sOUT|\sIN)?\:?\s*

除了正则表达式也匹配

之类的字符串外,它的工作是正常的
  

引用羽扇豆,皮平等。

我的问题是如何严格选择与整个单词模式匹配的字符串

注意:我尝试了^(PIN)(\sOUT|\sON)?\:?\s*,但没有用。 我是Java新手,不胜感激

1 个答案:

答案 0 :(得分:2)

在使用正则表达式时,总是建议手头the documentation

Boundary matchers下,我们发现:

  

\b字边界

因此,您可以使用模式\bPIN(\sOUT|\sIN)?:?\s*来强制PIN仅在单词的开头匹配,即位于字符串/行的开头,或者以非单词字符开头,例如空格或标点符号。边界仅匹配位置,而不匹配字符,因此,如果前面的非单词字符将其作为单词边界,则该字符仍不属于匹配项。

请注意,第一个(…)分组对于文字匹配PIN来说是不必要的,此外,冒号:没有特殊含义,不需要转义。