如何使用正则表达式替换由未知字符串分隔的2个已知字符串?
例如,我可能有
known_string_1 blah_random text blah known string 2
我知道我需要在refexp中的两个已知字符串之间使用某种通配符表达式,但作为regexp nooblet我不知道该使用什么。两个已知字符串中间的未知字符串可以是任意长度。
我正在使用它来用新的东西替换一些旧的代码,但是已知的块用不同的选项卡缩进这一事实并没有帮助。
非常感谢,
詹姆斯
答案 0 :(得分:3)
非常简单,.*
将匹配任何字符,无论多少次。
所以对于你的情况,正则表达式
known_string_1.*known_string_2
只要您的已知字符串中的任何字符都不是?
,+
等元字符,就可以正常工作。在这种情况下,它们需要使用{{1}进行转义}例如\
,\?
等
答案 1 :(得分:1)
使用.*
作为两个已知字符串之间未知文本的模式,可以帮助您完成大部分工作。但是,如果您的字符串类似于known_string_1 unknown_text_1 known_string_2 unknown_text_2 known_string_2
?
如果您只使用.*
,那么这将贪婪地匹配,并且它将匹配字符串unknown_text_1 known_string_2 unknown_text_2
。这是你想要的吗?
如果那不是您想要的(即您只想删除unknown_text_1
),那么您需要使用非贪婪修饰符:.*?
。
另外,我希望您的known_text_1
和known_text_2
字符串不会打开和关闭[X] HTML元素。每个人都知道you shouldn't parse [X]HTML with a regular expression。