正则表达式,用于查找以大写字母开头并与“-”或“”连接的> = 1个单词的链

胡安·图特里福

我想获取所有至少1个单词的仅字母“链”,以大写字母开头,然后是小写字母,并用空格(“”)“-”连接(“链”不能与“- “ 与 ” ”)

例如,对于以下文本:

对于第一阶段,应按开始,然后按照步骤一和步骤三进行操作。对于最后阶段,您必须遵循一,二,五,七步骤的顺序

我的输出应该是

[“对于”,“第一阶段”,“开始”,“第一步”,“第三步”,“最后阶段”,“一二五十七”,“步骤”]

到目前为止,我尝试编写2种不同的正则表达式来解决我的问题。第一个字符串应返回与“-”连接的“ chains”,第二个字符串应返回与“”连接的“ chains”:

import re
list(set(re.findall('([A-Z][a-z]+-)*[A-Z][a-z]+', mystring) + re.findall('([A-Z][a-z]+ )*[A-Z][a-z]+', mystring)))

但是,我猜他们错了,因为他们俩都无法正常工作。

维克多·史翠比维

您可以使用

\b[A-Z][a-z]+(?=([-\s]?))(?:\1[A-Z][a-z]+)*\b(?!-[A-Z])

请参阅regex演示详细资料

  • \b -字边界
  • [A-Z][a-z]+ -大写ASCII字母,后跟一个或多个小写ASCII字母
  • (?=([-\s]?))-正向超前查询,需要-立即在当前位置的右侧添加a或空白字符(1或0次,可选),将字符捕获到第1组中
  • (?:\1[A-Z][a-z]+)* -零次或多次重复
    • \1 -与第1组中捕获的文本相同
    • [A-Z][a-z]+ -大写ASCII字母,后跟一个或多个小写ASCII字母
  • \b(?!-[A-Z])-不紧随其后的单词边界-和大写ASCII字母。

参见Python演示

import re
pattern = r"\b[A-Z][a-z]+(?=([-\s]?))(?:\1[A-Z][a-z]+)*\b(?!-[A-Z])"
text = "For the First Stage, you should press Start and you should follow Step-One and Step-Three. For the Final Stage, you must follow the sequence of steps One-Two-Five Seven // Steps One-Two-Five-Seven"
print( list(set([x.group() for x in re.finditer(pattern, text)])) )
# => ['Step-Three', 'For', 'First Stage', 'Seven', 'One-Two-Five-Seven', 'Start', 'One-Two-Five', 'Steps', 'Step-One', 'Final Stage']

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式:如何知道该字符串包含至少2个大写字母?

来自分类Dev

删除大写字母之间的空格,但保持单词之间的空格的正则表达式是什么?

来自分类Dev

正则表达式可在任何地方检查3个大写字母

来自分类Dev

正则表达式,以匹配至少一个大写字母,至少一位数字和任意数量的特殊字符

来自分类Dev

如何为带有至少四个大写字母的(可能是波兰语)单词建立正则表达式?

来自分类Dev

正则表达式仅匹配2个大写字母的字符串

来自分类Dev

如何仅创建2个大写字母的正则表达式?

来自分类Dev

修改正则表达式,以验证密码至少包含一个大写字母。红宝石

来自分类Dev

正则表达式获取以大写字母开头的单词或一系列单词

来自分类Dev

为什么我的正则表达式至少有1个大写字母不起作用?

来自分类Dev

如何使用正则表达式将两个没有大写字母的大写字母匹配在一起?

来自分类Dev

正则表达式检查密码是否至少包含一个大写字母

来自分类Dev

正则表达式,包含2个大写字母和3个数字

来自分类Dev

正则表达式匹配列表中至少包含1个大写字母,1个小写字母,1个数字和1个特殊字符的字符串

来自分类Dev

正则表达式包含至少一个大写字母,不包含至少一个下划线

来自分类Dev

正则表达式,用于字母和数字的组合,长度为5到30个字母,具有至少4个大写字母,2个小写字母和至少1个数字

来自分类Dev

正则表达式提取3到8位数字和3个字母的文本(大写字母)之间的数据

来自分类Dev

由正则表达式首字母大写字母的单词在循环之间拆分

来自分类Dev

正则表达式匹配至少一个大写字母,后跟可选的+/-,并且没有特殊字符

来自分类Dev

正则表达式:如何知道该字符串包含至少2个大写字母?

来自分类Dev

正则表达式-选择以大写字母开头的连续单词

来自分类Dev

Python正则表达式,如何搜索以大写字母开头的单词?

来自分类Dev

正则表达式,包含2个大写字母和3个数字

来自分类Dev

如何使用正则表达式拆分两个粘贴的单词,一个全部大写,另一个以大写字母开头

来自分类Dev

每个第一个字符和任何大写字母的正则表达式

来自分类Dev

正则表达式查找至少包含一个大写字母的子字符串

来自分类Dev

如何选择包含以大写字母开头和正则表达式开头的单词的字符串?

来自分类Dev

用户正则表达式如何用逗号分隔一个或多个大写字母?

来自分类Dev

正则表达式 - 仅在单词开头允许大写字母

Related 相关文章

  1. 1

    正则表达式:如何知道该字符串包含至少2个大写字母?

  2. 2

    删除大写字母之间的空格,但保持单词之间的空格的正则表达式是什么?

  3. 3

    正则表达式可在任何地方检查3个大写字母

  4. 4

    正则表达式,以匹配至少一个大写字母,至少一位数字和任意数量的特殊字符

  5. 5

    如何为带有至少四个大写字母的(可能是波兰语)单词建立正则表达式?

  6. 6

    正则表达式仅匹配2个大写字母的字符串

  7. 7

    如何仅创建2个大写字母的正则表达式?

  8. 8

    修改正则表达式,以验证密码至少包含一个大写字母。红宝石

  9. 9

    正则表达式获取以大写字母开头的单词或一系列单词

  10. 10

    为什么我的正则表达式至少有1个大写字母不起作用?

  11. 11

    如何使用正则表达式将两个没有大写字母的大写字母匹配在一起?

  12. 12

    正则表达式检查密码是否至少包含一个大写字母

  13. 13

    正则表达式,包含2个大写字母和3个数字

  14. 14

    正则表达式匹配列表中至少包含1个大写字母,1个小写字母,1个数字和1个特殊字符的字符串

  15. 15

    正则表达式包含至少一个大写字母,不包含至少一个下划线

  16. 16

    正则表达式,用于字母和数字的组合,长度为5到30个字母,具有至少4个大写字母,2个小写字母和至少1个数字

  17. 17

    正则表达式提取3到8位数字和3个字母的文本(大写字母)之间的数据

  18. 18

    由正则表达式首字母大写字母的单词在循环之间拆分

  19. 19

    正则表达式匹配至少一个大写字母,后跟可选的+/-,并且没有特殊字符

  20. 20

    正则表达式:如何知道该字符串包含至少2个大写字母?

  21. 21

    正则表达式-选择以大写字母开头的连续单词

  22. 22

    Python正则表达式,如何搜索以大写字母开头的单词?

  23. 23

    正则表达式,包含2个大写字母和3个数字

  24. 24

    如何使用正则表达式拆分两个粘贴的单词,一个全部大写,另一个以大写字母开头

  25. 25

    每个第一个字符和任何大写字母的正则表达式

  26. 26

    正则表达式查找至少包含一个大写字母的子字符串

  27. 27

    如何选择包含以大写字母开头和正则表达式开头的单词的字符串?

  28. 28

    用户正则表达式如何用逗号分隔一个或多个大写字母?

  29. 29

    正则表达式 - 仅在单词开头允许大写字母

热门标签

归档