如何用评论创建正则表达式搜索和替换?

克里斯蒂安·沃尔夫(Christian Wolf)

我有一个奇怪的问题:我有一个代码(它是LaTeX,但在这里无关紧要),其中包含带句点(句子)的长行。为了更好的版本控制,我想将这些句子分别换行。这可以通过来实现sed 's/\. /.\n/g'

现在,如果也有带有潜在句点的评论,就会出现问题。这些注释不得更改,否则它们将被解析为LaTeX代码,这可能会导致错误等。

作为一个伪示例,您可以使用

Foo. Bar. Baz. % A. comment. with periods.

结果应该是

Foo.
Bar.
Baz. % ...

或者,该注释可以在下一行没有任何问题地进行。

perl如果可以更好地使用,也可以使用我尝试了不同的程序(sedperl),但有一些想法,但没有达到我的预期。注释也被更改,或者仅第一时间段被更改(perl -pe 's/^([^%]*?)\. /\1.\n/g')。

你能为我指出正确的方向吗?

迈克尔·卡曼

这很棘手,因为您实际上是在尝试匹配所有不跟在“%”之后的出现的“。”。负向后看在这里很有用,但是Perl不支持宽度可变的负向后看。(尽管在某些情况下有很多伪造它的方法。)在这里,我们可以使用回溯控制动词来摆脱它:

s/(?:%(*COMMIT)(*FAIL))|\.\K (?!%)/\n/g;

(?:%(*COMMIT)(*FAIL))部队更换停止首次通过承诺匹配,然后无条件失败,从而防止回溯看到一个“%”。“真实”匹配遵循交替:\.\K (?!%)寻找一个在句点之后而不是“%”的空格。\K导致不包括在比赛期间,所以我们没有把它列入了更换。我们只匹配并替换空间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Perl正则表达式如何用不确定的出现次数进行搜索和替换?

来自分类Dev

如何用正则表达式替换文本?

来自分类Dev

如何用正则表达式替换字符序列?

来自分类Dev

如何用正则表达式替换WebStorm / PhpStorm

来自分类Dev

如何用正则表达式进行模式替换?

来自分类Dev

如何用变量替换vim正则表达式

来自分类Dev

如何用正则表达式替换字符序列?

来自分类Dev

添加几个搜索和替换正则表达式

来自分类Dev

Ruby正则表达式搜索和替换数组

来自分类Dev

正则表达式搜索和替换数组键

来自分类Dev

添加几个搜索和替换正则表达式

来自分类Dev

Vim搜索和替换-正则表达式

来自分类Dev

正则表达式帮助-搜索和替换

来自分类Dev

正则表达式:搜索和替换缺失的标签

来自分类Dev

PhpStorm 正则表达式搜索和替换

来自分类Dev

GoogleDocs 搜索和替换中的正则表达式

来自分类Dev

如何用VBScript正则表达式和VBA替换单词?

来自分类Dev

正则表达式:搜索/替换

来自分类Dev

正则表达式搜索和替换:如何在文本块中移动字符

来自分类Dev

如何使用gsub搜索和使用正则表达式替换?

来自分类Dev

正则表达式中的多个条件 - 如何用破折号替换冒号和空格

来自分类Dev

如何使用找到的表达式和正则表达式替换文本?

来自分类Dev

搜索并替换为正则表达式正则表达式

来自分类Dev

如何创建正则表达式

来自分类Dev

如何用sed表达此正则表达式?

来自分类Dev

如何用sed表达此正则表达式?

来自分类Dev

如何用JavaScript正则表达式替换href内的所有内容?

来自分类Dev

Perl正则表达式:如何用html标签替换终端控制字符?

来自分类Dev

如何用正则表达式替换匹配的组值

Related 相关文章

热门标签

归档