使用Regex查找句子的第一个字母和符号

时间:2019-06-04 12:51:11

标签: 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}

Demo with regex101

但是,并非每个句子都适用。而且,它不会检测第一个字母/数字和带有句子的符号之间是否存在空格。

我在哪里出错?


另外,在性能方面,对于这种情况,使用正则表达式还是PHP更有意义?

3 个答案:

答案 0 :(得分:0)

您好,此匹配您提供的所有示例

([A-Za-z\d ]+)(\.|,)

它的作用如下:

  • 它匹配所有大小写的字母,数字或空格。它至少应该找到 其中一个或多个(+号)。
  • 它应该以点或逗号结尾。 (\。)注意:在正则表达式中,点应转义。

如果不能解决问题,请在下面评论

编辑:此处的演示:click

答案 1 :(得分:0)

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

Demo

说明:

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

答案 2 :(得分:0)

以下正则表达式将匹配放置在句子开头的单个字母,然后加上或逗号:

^(([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组-将同时返回字母/数字和句点/逗号(包括可能的空格)。万一您出于某种原因需要两者兼得。
  • 第2组-在句子的开头仅返回字母或数字,我认为您实际上在大多数情况下都会使用
  • 第3组-将返回其余文本。

需要根据您的需要修改正则表达式。例如,如果您不希望在句子开头的字母/数字后有空格时匹配,或者要包含更多分隔符来标记分隔符,则您不希望匹配。让我知道您是否希望此正则表达式符合其他约束条件。

请参见DEMO