首页 > 解决方案 > Reg Ex 严格匹配以模式开头的单词

问题描述

我正在尝试在序列之后提取文本。但我有多个序列。正则表达式应该理想地匹配任何这些序列的第一次出现。

我的序列是

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

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

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

它正在做这项工作,只是正则表达式也匹配字符串,如

引用 lupin in, pippin 等

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

注意:我试过^(PIN)(\sOUT|\sON)?\:?\s*但没有用。我是java新手,感谢任何帮助

标签: javaregexstring

解决方案


始终建议在使用正则表达式时准备好文档

在那里,在边界匹配器下,我们发现:

\b          一个词的边界

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

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


推荐阅读