【发布时间】:2016-12-06 05:30:42
【问题描述】:
我正在寻找一个单一的 UNIX/Perl/PHP 风格的正则表达式来对文本字符串列表执行以下操作:
- 搜索以“#”字符开始的第一行
- 修改所有出现更多搜索字符串但没有开头的“#”的字符串,以便这些行也以“#”开头。此类行可能有尾随文本(但不一定有)。
这必须在一条路径中完成。
例如:
some line
# some string
some line
some line
some line
some string some other string
some line
some line
some string
some line
some line
some line
some string some trailing text
some line
所以我正在寻找的是一个正则表达式,它将匹配# some string 行,然后在以some string 开头的其他行的开头添加#。将被匹配和修改的行是,
-
some string some other string-># some string some other string -
some string-># some string -
some string some trailing text-># some string some trailing text
我曾考虑使用^(#?[^\r\n]+$)[\s\S]*(^\1[^\r\n]*$)+ 之类的方法来匹配所有此类事件,但我需要将其拆分以替换每个单独的事件...
谢谢。
【问题讨论】:
-
到目前为止你尝试过什么正则表达式?
-
^(#?[^\r\n]+$)([\s\S]*)(^\1[^\r\n]*$)+
标签: regex replace duplicates rename