微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式可用于裁剪吗?

假设我有这三行:

the quick brown fox
the brown fox
the quick brown quick fox

除了单词quick之外,可以使用正则表达式来裁剪每行中的所有内容吗?

最终结果如下:

quick

quickquick

解决方法

具体取决于您使用的语言,但这里有一些使用正则表达式的常用方法(Python中的代码示例):

>查找目标字符串的所有匹配项,然后将每个匹配项合并为一个字符串:

>>> import re
>>> s = 'the quick brown quick fox'
>>> ''.join(re.findall('quick',s))
'quickquick'

>构造一个正则表达式以匹配除目标字符串之外的所有内容,然后用空字符串替换每个匹配项(这通常比列出的其他替代项更难):

>>> re.sub('(?!quick|(?<=q)uick|(?<=qu)ick|(?<=qui)ck|(?<=quic)k).','',s)
'quickquick'

>使用捕获组匹配所有内容,直到出现目标字符串,然后仅使用目标字符串替换:

>>> re.sub('.*?(quick|$)',r'\1',s)
'quickquick'

如果您的字符串在示例中有多行,则可以先在换行符上拆分字符串,或者调整解决方案以保持换行符,例如:

>>> s = '''the quick brown fox
... the brown fox
... the quick brown quick fox'''
>>> print ''.join(re.findall('quick|[\r\n]',s))
quick

quickquick
>>> print re.sub('.*?(quick|$)',s,flags=re.MULTILINE)
quick

quickquick

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐