python - 如何用字符串中的另一个正则表达式替换一个正则表达式
问题描述
这个问题展示了如何用另一个像这样的正则表达式替换一个正则表达式
$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'
基本上我喜欢删除.
两个字母之间的单词。有人可以帮我解决这个问题吗?先感谢您。
解决方案
这些表达式可能与您的想法很接近:
\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的右上角面板中进行了说明。如果您愿意,您还可以在此链接中观看它如何与一些示例输入匹配。
推荐阅读
- c# - c# URL POST Web API
- python - 将具有相应值的 DictHeader 添加到现有表中
- vb.net - 如何从 DictionaryEntry 中读取选定的值
- php - 如何从 yii2 中的 dosamigos datepicker 获取当天的名称?
- c# - 在初始化 ViewModel 时防止执行 ValueChanged
- r - 比较txt文件和Xlsx文件
- r - R as.POSIXct 尝试两种输入格式
- sql-server - StagingkeyID 中的 SSIS 突然 NULL 无法填写资料表
- jquery - 如何使 jquery 自动完成列表项响应
- r - 在 write.csv 函数中指定路径