Python 请帮我把这个正则表达式分解一下

Python 请帮我把这个正则表达式分解一下,python,regex,Python,Regex,正则表达式模式\b([A-Za-z]*(?:s))\b匹配以s结尾的所有单词 那个表达式的哪一部分表示结束?我怎么写单词的开头是s?或者结尾和开头是s?s在最后一个\b之前表示字符串必须以字母s结尾。如果还要检查起始字符,则该字符必须也是s。然后在第一个单词边界\b后添加另一个s 我怎么写单词的开头是s 或者结束和开始是什么 \b匹配单词字符和非单词字符(反之亦然)。所以\b有助于匹配完整的单词。如果您真正指的是直线的起点和终点,请添加锚定 ^s[A-Za-z]*s$ 如果你更喜欢视觉化

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


那个表达式的哪一部分表示结束?我怎么写单词的开头是s?或者结尾和开头是s?

s
在最后一个
\b
之前表示字符串必须以字母
s
结尾。如果还要检查起始字符,则该字符必须也是
s
。然后在第一个单词边界
\b
后添加另一个
s

我怎么写单词的开头是s

或者结束和开始是什么

\b
匹配单词字符和非单词字符(反之亦然)。所以
\b
有助于匹配完整的单词。如果您真正指的是直线的起点和终点,请添加锚定

^s[A-Za-z]*s$

如果你更喜欢视觉化

\b
是一个字符。它基本上覆盖了“单词”之间的空间,这取决于您使用的正则表达式的引擎和风格

确切地说,哪些字符是单词字符取决于您使用的正则表达式的风格。在大多数风格中,由短字符类
\w
匹配的字符是按单词边界视为单词字符的字符。Java是一个例外。Java对
\b
支持Unicode,但对
\w
不支持Unicode

通过在单词边界之前放置特定字符,它将只匹配以该字符结尾的单词;在这种情况下,
s
。根据定义,它也将匹配单个字符
s

也就是说,任何以字母s结尾的单词都将匹配,然后被捕获到第一组中,这使得以后可以使用
$1
访问它。在单词的开头没有进行匹配(除了检查它是否是单词边界字符)

作为提示:如果你想匹配一个单词从一个字符开始,然后考虑把它放在单词边界字符之后。例如:

\b((?:e)[A-Za-z]*)\b

…应该匹配以
e

开头的任何单词好的,我明白了,如果我把s放在前面,那将是开始,如果我把s放在前面,接近结尾,那么它将两者都有。太谢谢你了这很漂亮谢谢你。。我是一个视觉化的人,所以这更有意义。关于如何处理b或c有什么想法吗?我现在开始和结束了。。但是其余的还是有点混乱。所以我要做的是。我将把你原来的问题回复到之前的问题,因为每个问题只问一个问题是一种常见的礼貌。既然你似乎有更多的问题要问,就鼓励你自己问他们。@Makoto我没有找到任何关于
如何写单词开头的正则表达式is s?还是结尾和开头都是s?
@AvinashRaj:它被很好地分解了……如果一个人需要匹配一个单词是以s开头还是以s开头和结尾,那么在单词边界之后添加字符是一个逻辑飞跃。我会给答案添加一个小附录。总是试着问一个问题。这个正则表达式不就是
\b([a-Za-z]*s)\b
的一个更模糊的版本吗?我们要求问题对其他访问者有用;其中一部分是写一个问题陈述,并有一个标题来表达这个问题陈述。想象一下你的问题陈述:如果你有这个问题,你会在谷歌上搜索什么?不管那是什么,都是一个很好的问题陈述。你能搜索“请为我分解这个正则表达式”吗?
^s[A-Za-z]*s$
\b((?:e)[A-Za-z]*)\b