假设我们有一个字符串: some random text $$ hello world $$ some more stuff 在由$$分隔的字符串中,我想捕获所有出现o的地方(例如,为了在Sublime Text 3中查找和替换)。 我如何制定这样一个正则表达式命令?尽管我计划在Sublime Text中使用这个正则表达式命令,但我可以使用一个使用不同符号的正则表达式命令,并将其修复以在ST3中使用。
(?P<start>\$\$) # start by grabbing the starting literal '$$'
(?<middle>.*?)(?=\$\$) # then grab everything up until the ending '$$'
(?P<end>\$\$) # now grab the ending '$$'
2条答案
按热度按时间oxcyiej71#
使用正则表达式:
替换为:
其中
5
是替换字符串。测试here。
如果你想搜索一个子字符串而不是一个字符,你可以使用:
相同的替换字符串。
测试here。
另一种选择是首先提取分隔符(
$$ hello world $$
)之间的子字符串,然后对结果执行任何需要的搜索和替换操作。这可能还需要循环,直到不再进行替换。g0czyy6m2#
根据我的正则表达式知识,你需要用两个正则表达式来替换分隔符之间的所有o。第一个是实际抓取分隔符中的文本。例如:
示例:https://regex101.com/r/015Xj8/4
显然,您知道开始和结束是什么,因此如果需要,可以进一步简化它(例如,没有开始或结束组),但为了彻底起见,我已经包含了这些内容。
一旦你捕获了它的开始/结束,你就可以直接在文字'o'上查找/替换
o
。据我所知,通过正则表达式需要两个步骤来完成你想要的。我不太了解sublime,但也许它有一个类似sed的替换功能。下面的代码将替换字符串中的第一个
o
(类似于virolino的另一个答案),但是你需要多次单击“Enter”以确保最后的所有o都被替换,这样才有用:或者,如果你只是想捕获O(而不是其他),你可以确保它在开始和结束
$$
之间: