Regex 用正则表达式查找句子的第一个字母和符号

Regex 用正则表达式查找句子的第一个字母和符号,regex,Regex,用正则表达式查找句子的第一个字母和符号。 句子的开头有时是字母,有时是数字 15. Lorem ipsum is placeholder text B. Lorem ipsum is placeholder text C.Lorem ipsum is placeholder text D . Lorem ipsum is placeholder text E,Lorem ipsum is placeholder text 我写了这样的东西: [\dga-zA-Z.]{1\s} ^

用正则表达式查找句子的第一个字母和符号。 句子的开头有时是字母,有时是数字

15. Lorem ipsum is placeholder text
B. Lorem ipsum is placeholder text
C.Lorem ipsum is placeholder text
D .  Lorem ipsum is placeholder text
E,Lorem ipsum is placeholder text
我写了这样的东西:

[\dga-zA-Z.]{1\s}
^                   # beginning of line
  [\da-zA-Z]+       # 1 or more letter or digit
  \h*               # 0 or more horizontal spaces
  [.,]              # a dot or a comma

但这并不适用于每一句话。此外,它不会检测第一个字母/数字与句子符号之间是否存在空格

我哪里出错了?

此外,就此类场景的性能而言,使用regex或PHP更为合理?

您好,这与您提供的所有示例相匹配

([A-Za-z\d ]+)(\.|,)
其作用如下:

  • 它匹配所有大小字母、数字或空格。它至少应该找到 其中一个或多个(+符号)
  • 它应该以点或逗号结尾。(\.)注意:在正则表达式中,点应该转义
如果这不起作用,请在下面评论


编辑:此处演示:

使用:
^[\da-zA-Z]+\h*[,]

说明:

[\dga-zA-Z.]{1\s}
^                   # beginning of line
  [\da-zA-Z]+       # 1 or more letter or digit
  \h*               # 0 or more horizontal spaces
  [.,]              # a dot or a comma

以下正则表达式将匹配置于句子开头的单个字母或多个数字,然后后跟单个句点或逗号:

^(([a-zA-Z]{1}|[0-9]+)\s*[.,]{1})(.*)$
以下是分项数字:

^                  # Asserts position at start of the line
[a-zA-Z]{1}|[0-9]+ # Match a single alphabetic character or one or more digits
\s*                # Matches whitespace characters between 0 and unlimited times
[.,]{1}            # Matches a single period or comma character literal
.*                 # Matches the rest of the text
$                  # Asserts position at end of the line

  • 组1-将返回字母/数字和句点/逗号(包括可能的空格)。这是在情况下,你需要得到两个出于某种原因
  • 第二组-只返回句子开头的字母或数字,我想你大部分时间都在寻找这些字母或数字
  • 第3组-将返回文本的其余部分
正则表达式需要根据需要进行修改。例如,如果不希望在句子开头的字母/数字后有空格时匹配,或者希望包含更多标记分隔符的分隔符。如果您希望此正则表达式符合任何其他约束,请告诉我


请参阅

这是做什么的-->{1\s}?我写了一个答案,该答案应该考虑到您的问题中提到的多种可能情况,请查看它,并让我知道您是否需要其他约束。是的,有效,但遗憾的是,最后一个示例不起作用。原因可能是什么?我想,最后一个不应该起作用。编辑,请查看:或:([A-Za-z\d]+)(\。|,)感谢您投入时间和精力回答此问题。您好,谢谢,但我在演示的替换面板中没有看到任何输出。我想知道我是否错了?@J.Doe3我已经更新了答案,为你的文章的其余部分添加了一个组。现在你应该在演示中看到替换面板,如果不只是打开它并输入
$3
,只获取你的文本。我不相信这是OP想要的,因为它将同时匹配
AA2C.
15A.
,我认为他只希望在句子开头有一个或多个字符时匹配它,不是组合。@Matthew:这是你的观点,问题中没有提到。嗯,我的评论中的这些部分应该表明这是一种观点而不是事实:“我不相信……”和“我认为……”感谢你投入时间和精力回答这个问题@托托