如何使用正则表达式在字符串中的关键字前后缩进文本?
假设我有以下字符串
This is
some KEYWORD filler
text
我希望将其转换为:
This is
some <*>KEYWORD<*> filler
text
答案 0 :(得分:2)
字面解释如下:
s/(KEYWORD)/<*>$1<*>/g
答案 1 :(得分:1)
每个人都有不同的做事方式,所以我只想补充一点,你也可以结合使用 Lookahead and Lookbehind Zero-Length Assertions实现这一目标。
s/(?=KEYWORD)|(?<=KEYWORD)/<*>/g
正则表达式:
(?= # look ahead to see if there is:
KEYWORD # 'KEYWORD'
) # end of look-ahead
| # OR
(?<= # look behind to see if there is:
KEYWORD # 'KEYWORD'
) # end of look-behind
答案 2 :(得分:0)
Simpson,这是一个使用Perl正则表达式执行替换的单行程序:
($result = $subject) =~ s/(KEYWORD)/<*>$1<*>/mg;
它是如何运作的?
正则表达式只是(KEYWORD)
它匹配文字字符串&#34; KEYWORD&#34;并在第1组中捕获它。
在替换中,$1
指的是第1组的内容。