当前位置: 首页 > 知识库问答 >
问题:

正则表达式将单词与第一个大写字母匹配

胥良平
2023-03-14

尝试使用正则表达式识别文本数据的结构并遇到障碍。

对于下面的示例文本


Lorem Ipsum只是印刷和排版行业的虚拟文本。自16世纪以来,Lorem Ipsum一直是业界的标准虚拟文本。

我是一个标签-Lorem Ipsum只是打印的虚拟文本

下面的正则表达式选择I AM A HEADER:和I AM A TAB-

^\s*(?:\b[A-Z]+\b[\s]*)+(?:[:-])\s*$

请建议进行编辑,以匹配“我是标题”和“我是标签”,并忽略结尾标记“:”和“-”。

共有2个答案

庞书
2023-03-14

这是@Stribizev的解决方案,效果很好。

^\s*(?:\b[a-zA-Z]+\b\s*)+(?=[:-])

对于像我这样的新手,这是对解决方案的简单解释:

> ^\s      Anchor to the white space (tab, newline, blankspace)
> *        Look for repetition of white space if any 
> (?:      Start a non-capturing group 
> \b       Look for a word 
> [a-zA-Z] Anyword that starts with either a capital or small alphabet
> +        Look for repeating capital/small alphabets
> \s*      Match a blank space after the word 
> )+       Repeat 
> (?=      Ignore what follows (my best guess) 
> [:-]     Look for ':' or '-'

本质上,这个正则表达式在换行符中寻找一组单词,后面跟着“:”或“-”

通过添加{n,m}as,告诉上面的表达式超出您开始丢失相关信息的单词数,从而使上面的表达式更智能

^[\s]*(?:\b[a-zA-Z]+\b[\s]*){1,3}(?=[:-])
赵朝
2023-03-14

你可以用

^\s*(?:\b[a-zA-Z]+\b\s*)+(?=[:-])

查看正则表达式演示

正则表达式分解:

这里的要点是将[a-z]添加到[a-z]范围,删除\s*$并将(?:…)非捕获组转到前瞻(不使用字符)。

 类似资料:
  • REGEX试图构建一个能够检索单词的第一个字母、该单词的任何其他大写字母以及每个第一个字母(包括同一单词中的任何大写字母)的正则表达式时遇到了麻烦 尝试使用此JUS获得前2个匹配项: 欢迎任何帮助,谢谢

  • 问题内容: 我在为以下情况找到正确的正则表达式时遇到了麻烦: 可以说: 我想匹配整个单词-例如应该返回,因为这不是一个单词,并且应该返回,因为在左右两侧都没有字母字符。 问题答案: 尝试 从文档: 匹配空字符串,但仅匹配单词的开头或结尾。 请注意,该模块使用的简单定义作为“字母数字或下划线字符的序列”,其中“字母数字”取决于语言环境或选项。 另请注意,如果没有原始字符串前缀,则被视为“退格”,而不

  • 问题内容: 在StackOverflow上有很多问题和答案,假设可以在regexp中使用来匹配“字母” 。但是,使用Unicode时,会有更多的字符被大多数人视为字母(所有希腊字母,Cyrllic ..等等)。Unicode定义了许多块,每个块可能都有“字母”。 Java定义 为诸如字母字符之类的东西定义了Posix类,但是被指定为仅与US- ASCII一起使用。预定义的字符类将单词定义为,其中还

  • 我的输入只能有两个值或。我可以使用什么正则表达式来确保这两个单词中的任何一个都已提交?

  • 我需要一个正则表达式来捕获一个字符串的单词部分,这是骆驼大小写,可能有一个首字母缩略词在其中。换句话说,我想将一个骆驼大小写字符串拆分为它的单词和缩略词。