正则表达式:为“搜索和替换工作”发明的“字符串匹配工作”和“捕获”发明的“环视”

时间:2015-10-17 12:25:11

标签: regex replace pattern-matching

我可以这样说:

  

“lookaround”是为处理字符串“匹配”作业而发明的,

  

“捕获”是为了处理字符串“替换”工作而发明的。

此外

我能否得出结论:

  

“捕获”对于字符串“匹配”作业是不必要的,

  对于字符串“替换”作业,

“lookaround”是不必要的。

如果上述四个引号中的任何一个不正确,请告诉我一个与上述四个引号相冲突的理由或正则表达式。

1 个答案:

答案 0 :(得分:1)

  

"捕获"字符串"匹配"是不必要的工作

不,它依赖于语言。在python中,捕获组也用于匹配目的。见下面的例子,

method_missing': undefined methodtimeSpentSeconds=' for
#JIRA::Resource::Worklog:0x007f831db3f360 (NoMethodError) from jira.rb:33:in

Lookarounds在这里无法帮助提取双引号之间的文本。因为loorounds不匹配起始和结束引用,导致不正确的结果。

  

"环视"字符串"替换"是不必要的工作

如果我们想要替换显示为整个单词的>>> import re >>> s = 'foo"bar"buzz"blah"' >>> re.findall(r'"([^"]*)"', s) ['bar', 'blah'] ,那么我们可以使用以下基于外观的正则表达式。

buzz

这里我们也可以使用捕获组,但也可以使用外观。

>>> s = "buzz bar buzz foobuzz buzz"
>>> re.sub(r'(?<!\S)buzz(?!\S)', '***', s)
'*** bar *** foobuzz ***'