如何在正则表达式 Python 中处理"



我正在尝试使用Regex获取下面代码中的fary_trigger_post。然而,我不明白为什么它总是在匹配模式的末尾包含",这是我没有预料到的。有什么想法或建议吗?

re.match(
r'-instance[ "']*(.+)[ "']*$', 
'-instance "fary_trigger_post" '.strip(), 
flags=re.S).group(1)

'fary_trigger_post"'

谢谢。

(.+(是贪婪的,并且抓取ANY字符直到输入结束。如果您将输入修改为在最后一个双引号(例如'-instance "fary_trigger_post" asdf'(之后包含字符,则会在输出中找到双引号和其余字符(例如fary_trigger_post" asdf(。您应该尝试[^"']+来捕获除引号之外的所有字符,而不是.+。这应该会回报您的期望。

re.match(r'-instance[ "']*([^"']+)[ "'].*$', '-instance "fary_trigger_post" '.strip(), flags=re.S).group(1)

另外,请注意,我修改了表达式的末尾以使用.*,它将匹配最后一个引号后面的任何字符。

以下是我在匹配字符串中使用的内容,但如果不了解所有情况,很难提供更好的答案:

r'-instances+"(.+)"s*$'

当您尝试获取组1(即(.+)(时,regex将跟随此匹配到字符串的末尾,因为它可以匹配.(任何字符(1次或多次(但需要最大次数(。我建议使用以下模式:

'-instance[ "']*(.+)["']+ *$'

这将需要regex分别匹配最后的所有空格和所有quoutes,这样它就不会被包括在第1组中

相关内容

  • 没有找到相关文章

最新更新