【发布时间】:2011-06-03 15:43:34
【问题描述】:
我有如下技术字符串:
"The thing P1 must connect to the J236 thing in the Foo position."
我想用正则表达式匹配那些只有大写的单词(即这里的P1 和J236)。问题是当它是一个字母的单词时,我不想匹配句子的第一个字母。
例如,在:
"A thing P1 must connect ..."
我只想要P1,而不想要A 和P1。通过这样做,我知道我可能会错过一个真正的“词”(例如"X must connect to Y"),但我可以忍受它。
另外,如果句子都是大写的,我不想匹配大写单词。
例子:
"THING P1 MUST CONNECT TO X2."
当然,理想情况下,我想在这里匹配P1 和X2 的技术词,但由于它们在全大写句子中“隐藏”,而且这些技术词没有特定的模式,所以这是不可能的。再次,我可以忍受它,因为全大写的句子在我的文件中并不常见。
谢谢!
【问题讨论】:
-
所有技术术语都包含数字吗?
-
无论你做什么,都不要使用像
[A-Z]这样的7位字面量。那是非常 RADIX-50,在过去几十年编写的代码中没有位置。使用适用于任何文本的东西。这至少意味着使用与\w或[[:alpha:]]或\pL或\p{Alphabetic}相关的内容,具体取决于您的正则表达式语言和环境。事实上,实现方式差异很大,其中一些在某些平台上可能是合法且正确的,但在其他平台上可能是合法且错误的。