特殊正则表达式/提取所有大写单词,这些单词还具有诸如“”、“/”、“\”等特殊字符

2024-06-09 10:37:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新的正则表达式,我想捕捉多个大写单词。 有时大写字母之间可能有特殊的字符。你知道吗

示例1:

string = string = 'MY MANAGEMENT PRIOR ASSESSMENT / NEW PLANNING SUPRESS RATE  - TEAM : 14 

我要正则表达式捕捉所有大写单词和分隔它们的特殊字符

"MY MANAGEMENT PRIOR ASSESSMENT / NEW PLANNING SUPRESS RATE  - TEAM"

示例2:

string2 = 'SPORT/TRACK INFO  ¶·»Sport Coverage(s): All Sport  primary ¶·»WWE Hi-Low:  ¶·»BBC Hi-Low: ¶·»Sports Issues: can run forever ¶·»BBC Sports: kjkj '

我希望正则表达式捕获"SPORT/TRACK INFO", "WWE", "BBC"


Tags: 示例newstringratemy单词managementteam
1条回答
网友
1楼 · 发布于 2024-06-09 10:37:20

鉴于大写字母需要与小写字母分开
在单词之间可以有空格,-,/,\是这样的:

[A-Z](?<![a-zA-Z][A-Z])(?:[A-Z]|[-\s/\\])*(?<=[A-Z])(?![a-zA-Z])

https://regex101.com/r/28FR7s/1


Pythonfindall()示例代码

>>> import re
>>>
>>> string1 = 'MY MANAGEMENT PRIOR ASSESSMENT / NEW PLANNING SUPRESS RATE - TEAM : 14'
>>> string2 = 'SPORT/TRACK INFO ¶·»Sport Coverage(s): All Sport primary ¶·»WWE Hi-Low: ¶·»BBC Hi-Low: ¶·»Sports Issues: can run forever ¶·»BBC Sports: kjkj '
>>>
>>> Rx = r"[A-Z](?<![a-zA-Z][A-Z])(?:[A-Z]|[-\s/\\])*(?<=[A-Z])(?![a-zA-Z])"
>>>
>>> re.findall( Rx, string1 )
['MY MANAGEMENT PRIOR ASSESSMENT / NEW PLANNING SUPRESS RATE - TEAM']
>>> re.findall( Rx, string2 )
['SPORT/TRACK INFO', 'WWE', 'BBC', 'BBC']

相关问题 更多 >