以“词”拆分句子,将多个大写词(假定为专有名词)视为一个
Split sentence by “words”, treating multiple capital words (assumed to be proper nouns) as one
我正在尝试拆分一个字符串,其中多词专有名词被识别为一个标记。比如下面的代码需要改,
import re
s = 'Multi-Criteria Decision Making (MCDM) is increasingly used in RE projects.'
out = re.compile("\s").split(s)
print(out)
为了得到这个想要的结果:
['Multi-Criteria Decision Making', 'MCDM', 'is', 'increasingly', 'used', 'in', 'RE', 'projects']
我找到了 this,但我无法将它正确地合并到代码中。
提前致谢!
您可以匹配以大写字符开头,后跟 1 个以上小写字符,中间有 space 或 -
的连续单词,以获得 [= 的单个匹配项35=] 决策.
要匹配其他单词,您可以使用交替|
来匹配1个或多个单词字符。
[A-Z][a-z]+(?:[ -][A-Z][a-z]+)*|\w+
如果后面的部分在括号之间有 2 个或更多大写字符,则可以使用正向先行。
请注意,先行检查仅检查是否存在大写字符,它不会匹配前面单词中完全相同的大写字符。
[A-Z][a-z]+(?:[ -][A-Z][a-z]+)+(?= \([A-Z]{2,}\))|\w+
import re
s = 'Multi-Criteria Decision Making (MCDM) is increasingly used in RE projects.'
pattern = r'[A-Z][a-z]+(?:[ -][A-Z][a-z]+)+(?= \([A-Z]{2,}\))|\w+'
print(re.findall(pattern, s))
输出
['Multi-Criteria Decision Making', 'MCDM', 'is', 'increasingly', 'used', 'in', 'RE', 'projects']
我正在尝试拆分一个字符串,其中多词专有名词被识别为一个标记。比如下面的代码需要改,
import re
s = 'Multi-Criteria Decision Making (MCDM) is increasingly used in RE projects.'
out = re.compile("\s").split(s)
print(out)
为了得到这个想要的结果:
['Multi-Criteria Decision Making', 'MCDM', 'is', 'increasingly', 'used', 'in', 'RE', 'projects']
我找到了 this,但我无法将它正确地合并到代码中。
提前致谢!
您可以匹配以大写字符开头,后跟 1 个以上小写字符,中间有 space 或 -
的连续单词,以获得 [= 的单个匹配项35=] 决策.
要匹配其他单词,您可以使用交替|
来匹配1个或多个单词字符。
[A-Z][a-z]+(?:[ -][A-Z][a-z]+)*|\w+
如果后面的部分在括号之间有 2 个或更多大写字符,则可以使用正向先行。
请注意,先行检查仅检查是否存在大写字符,它不会匹配前面单词中完全相同的大写字符。
[A-Z][a-z]+(?:[ -][A-Z][a-z]+)+(?= \([A-Z]{2,}\))|\w+
import re
s = 'Multi-Criteria Decision Making (MCDM) is increasingly used in RE projects.'
pattern = r'[A-Z][a-z]+(?:[ -][A-Z][a-z]+)+(?= \([A-Z]{2,}\))|\w+'
print(re.findall(pattern, s))
输出
['Multi-Criteria Decision Making', 'MCDM', 'is', 'increasingly', 'used', 'in', 'RE', 'projects']