s = "hi mom, *please* send more *money*, luv!"
p = r"\*([^\*]+)\*"
print( "s = '", s, "'", sep = "" )
s = re.sub( p, r"<em>\1</em>", s )
print( "s = '", s, "'", sep = "" )
输出为:
s = 'hi mom, *please* send more *money*, luv!'
s = 'hi mom, <em>please</em> send more <em>money</em>, luv!'
我真的不明白发生了什么。我想我明白这一点
p = r"\*([^\*]+)\*"
,r代表一个原始字符串,当这个r前缀出现时,“一个紧跟着反冲的字符被包含在字符串中,没有任何变化。”好的,到目前为止还不错。因此p中的第一个和最后一个*将被转义,这意味着它们将包含在字符串中。我明白了。我知道()中的括号用于匹配,但也用于表示组的开始和结束。我还假设s = re.sub(p , r"<em>\1</em>", s)
中的“1”与组有关。但是…我不知道,只是不是所有的东西都在一起,我真的不明白我们是怎么得到第二根弦的。有人能帮我解决这个问题吗?你知道吗
这意味着在两个*之间,匹配一个或多个不是(^)a*的字符
用<;em>;组1<;/em>;替换匹配的字符串,即*please*;。第1组是在()之间捕获的所有内容,即请和钱。正则表达式中只有一个组,如果有多个组,则使用\2获取第二个组的内容,依此类推。你知道吗
*
是正则表达式中的一个特殊字符,因此r"\*"
对re引擎的*进行转义,以便它知道它正在查找文本*
[^\*]+
表示1个或多个非文字星号的字符\1
表示捕获组(括号之间的内容)https://www.debuggex.com/r/tety3IA93jSB1iah演示正则表达式匹配。。较暗的突出显示与捕获组内部匹配
相关问题 更多 >
编程相关推荐