请为我打破这个正则表达式

时间:2015-04-16 01:06:48

标签: python regex

正则表达式模式\b([A-Za-z]*(?:s))\b匹配以s结尾的所有单词。

该表达式中的哪一部分显示结尾?我怎么写这个词的开头是s?或者结束和开始是s?

2 个答案:

答案 0 :(得分:2)

如果你更关心可视化......

Regular expression visualization

Debuggex Demo

\bword 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$
相关问题