2

论坛成员,

我正在使用 NotePad++,并且在其他文本数据中嵌入了一堆 CAUTIONS。将 CAUTION 数据与其余文本数据区分开的两个常数是两个因素。一是警告文本始终为大写文本,二是警告文本始终以大写的“CAUTION”一词开头。下面是我所描述的一个小例子:

布拉布拉布拉布拉。注意 请勿在未先阅读用户手册的情况下对机器进行维护。布拉布拉布拉布拉布拉。

RegEx 是否有可能找到以下文本的许多不同变体:

注意 请勿在未先阅读用户手册的情况下对机器进行维护。

然后将其替换为以下内容:

 <caution><para>DO NOT PERFORM MAINTENANCE ON MACHINE WITHOUT FIRST READING THE OWNER'S MANUAL.</para></caution>

我需要帮助编写执行以下操作的 RegEx:

  1. 能够定位始终以单词“CAUTION”(大写)开头的数据
  2. 能够定位单词“CAUTION”之后的所有大写文本,直到它变为小写文本。
  3. 删除添加 XML 标记后开头的单词“CAUTION”。
  4. 不会被单词“Bla”中的大写字母“B”所迷惑(即“MANUAL. Bla”)。换句话说,它不包括在查找结果中开始下一个句子的第一个大写字母。如何消除这种贪婪的担忧?

这样的正则表达式可能吗?世界上如何才能使 RegEx 变得足够聪明,仅根据我所描述的内容找到与 CAUTION 相关的文本?任何信息将不胜感激。提前致谢。

4

1 回答 1

2

我没有专门的 notpad++,所以尽管他们的正则表达式实现中有任何怪癖,但这似乎可以解决问题:

CAUTION ([A-Z](([^a-z])+\s+)+) 

替换为

<caution><para>$1</caution></para> 

在这里查看它的实际效果:

http://regexr.com?35mku

于 2013-07-24T03:18:57.140 回答