Perl正则表达式:在字符串中匹配关键字后缩进/添加单词?

时间:2014-04-23 23:38:06

标签: regex string perl

如何使用正则表达式在字符串中的关键字前后缩进文本?

假设我有以下字符串

This is
some KEYWORD filler
text

我希望将其转换为:

This is
some <*>KEYWORD<*> filler
text

3 个答案:

答案 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组的内容。