正则表达式模式\b([A-Za-z]*(?:s))\b
匹配以s结尾的所有单词。
该表达式中的哪一部分显示结尾?我怎么写这个词的开头是s?或者结束和开始是s?
答案 0 :(得分:2)
如果你更关心可视化......
\b
是word boundary个字符。它基本上覆盖了“单词”之间的空间,取决于你正在使用的正则表达式的引擎和风格。
究竟哪些字符是单词字符取决于您正在使用的正则表达式。在大多数风格中,由短手字符类
\w
匹配的字符是通过字边界视为字符的字符。 Java是个例外。 Java支持\b
的Unicode,但不支持\w
。
通过在单词边界之前放置一个特定字符,它只会匹配以该字符结尾的单词;在这种情况下,s
。通过定义,它也将匹配单个字符s
。
也就是说,任何以字母s结尾的单词都会匹配,然后被捕获到第一个组中,这使得以后可以通过$1
访问它。在单词的开头没有匹配(除了检查它是否是单词边界字符)。
作为提示:如果你想匹配一个单词以字符开头,那么考虑将它放在单词边界字符之后。例如:
\b((?:e)[A-Za-z]*)\b
...应匹配以e
开头的任何字词。
答案 1 :(得分:1)
s
之前的 \b
表示该字符串必须以字母s
结尾。如果你想检查起始字符,它也必须是s
。然后在第一个单词边界s
之后添加另一个\b
。
如何写单词的开头是s?
\bs[A-Za-z]*\b
结束和开始是s?
\bs[A-Za-z]*s\b
\b
匹配单词字符和非单词字符(反之亦然)。因此\b
有助于匹配完整的单词。如果你真的是指一条线的起点和终点,请添加锚点。
^s[A-Za-z]*s$