首页 > 解决方案 > 如何用字符串中的另一个正则表达式替换一个正则表达式

问题描述

这个问题展示了如何用另一个像这样的正则表达式替换一个正则表达式

$string = '"SIP/1037-00000014","SIP/CL-00000015","Dial","SIP/CL/61436523277,45"';
$$pattern = '["SIP/CL/(\d*),(\d*)",]';
$replacement = '"SIP/CL/\1|\2",';
$string = preg_replace($pattern, $replacement, $string);
print($string);

但是,我无法调整该模式来解决我想删除位于 2 个单词之间而不是单词和数字之间的句号的情况:

text = 'this . is bad. Not . 820'
regex1 = r'(\w+)(\s\.\s)(\D+)'
regex2 = r'(\w+)(\s)(\D+)'
re.sub(regex1, regex2, text)

# Desired outcome:
'this is bad. Not . 820'

基本上我喜欢删除.两个字母之间的单词。有人可以帮我解决这个问题吗?先感谢您。

标签: pythonregex

解决方案


这些表达式可能与您的想法很接近:

\s[.](?=\s\D)

或者

(?<=\s)[.](?=\s\D)

测试

import re

regex = r"\s[.](?=\s\D)"
test_str = "this . is bad. Not . 820"
print(re.sub(regex, "", test_str))

输出

this is bad. Not . 820

如果您想探索/简化/修改表达式,它已在 regex101.com的右上角面板中进行了说明。如果您愿意,您还可以在此链接中观看它如何与一些示例输入匹配。



推荐阅读