2013-07-24 94 views
2

其他论坛成员,用于标记大写的正则表达式小心数据

我正在使用NotePad ++,并在其他文本数据中嵌入了一堆警告。将CAUTION数据与其他文本数据区分开来的两个常量是两个因素。一种是CAUTION文本总是在大写文本中,第二种是CAUTION文本始终以大写字母“CAUTION”开头。以下是我正在描述的一个小例子:

Bla bla bla bla bla。小心不要在没有仔细阅读用户手册的情况下对机器进行维护。 Bla bla bla bla bla bla。

是否有可能为一个正则表达式找到下面的文字中许多不同的变化:

注意不要进行维护机器没有先阅读使用说明书。

然后用下面的替换:

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

我需要帮助编码正则表达式是执行以下操作:

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

这样的RegEx可能吗?基于我所描述的内容,在世界上如何才能使RegEx变得足够聪明以仅查找与注意相关的文本?任何信息将不胜感激。提前致谢。

回答

2

我没有notpad ++具体地说,所以尽管在他们的正则表达式执行任何怪癖,这似乎这样的伎俩:

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

与更换

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

看到它在此采取行动:

http://regexr.com?35mku

+0

很好,它捕捉了标点符号+1 –