使用regexp替换由未知字符串分隔的已知字符串

时间:2010-10-13 16:22:11

标签: regex

如何使用正则表达式替换由未知字符串分隔的2个已知字符串?

例如,我可能有

known_string_1 blah_random text blah known string 2

我知道我需要在refexp中的两个已知字符串之间使用某种通配符表达式,但作为regexp nooblet我不知道该使用什么。两个已知字符串中间的未知字符串可以是任意长度。

我正在使用它来用新的东西替换一些旧的代码,但是已知的块用不同的选项卡缩进这一事实并没有帮助。

非常感谢,

詹姆斯

2 个答案:

答案 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_1known_text_2字符串不会打开和关闭[X] HTML元素。每个人都知道you shouldn't parse [X]HTML with a regular expression