当前位置: 首页 > 面试题库 >

正则表达式不会将空格字符与[\ r \ n \ t \ f \ s]匹配

魏彦
2023-03-14
问题内容

这可能是一个非常简单的修复程序,但我无法弄清楚!

给定以下文本,我正在尝试连续匹配(最多)3个大写单词。

Russell Lake West。比赛应包括所有3个单词。

此正则表达式将匹配前两个单词,但不匹配第三个单词(此处为demo):

(([A-Z][a-z]+)\s{0,2}([A-Z][a-z]+)?\s{0,2}([A-Z][a-z]+)?)

这个正则表达式
匹配所有3个单词,但是我必须在之间复制/粘贴空格,Lake然后West它才能正常工作(此处演示):

(([A-Z][a-z'-]+)\s{0,2}([A-Z][a-z'-]+)? \s{0,2}([A-Z][a-z'-]+)?)

                                       ^ pasted it here

所以我假设也许空白不被当作空白,而是换行符或类似字符,所以我尝试了这个(这里是演示):

[\r\n\t\f\s]West

但是它之前不能识别任何这些字符West,因此不会返回任何结果。

为什么regex101或Java无法识别Lake和之间的明显空白West?解决此问题的可靠方法是什么?


问题答案:

有很多种类的空间。您在演示中使用的是不间断的(在Unicode表中索引为160),它不属于\s(空格字符类),因为它不代表我们可以期望将文本拆分成单独位置的位置零件像线。
BTW \s已代表:\r \n \t \f

要匹配它,您可以使用\p{Zs}class。
您还可以将\s\p{Zs}类都与结合使用[\\p{Zs}\\s]



 类似资料:
  • 问题内容: 我正在寻找Java中与字符串中所有空白字符匹配的正则表达式。“ \ s”仅匹配一些,不匹配和类似的非ASCII空格。我正在寻找与Java字符串中可能出现的所有(常见)空白字符匹配的正则表达式。 [编辑] 需要说明的是:我不是指字符串序列“ ”我是指通常用“ ” 表示的单个Unicode字符U + 00A0 ,例如在HTML中,以及所有其他具有类似空格的unicode字符,例如“ NAR

  • 问题内容: 用于正则表达式的Java API 声明将匹配空格。因此,正则表达式应匹配两个空格。 这样做的目的是用单个空格替换两个连续空格的所有实例。但是,这实际上不起作用。 我对正则表达式或“空白”一词有严重的误解吗? 问题答案: 是的,你需要获取matcher.replaceAll()的结果:

  • 我正在尝试匹配以下正则表达式: 换句话说,一个单词边界后跟上面的任何字符串(可选地跟一个句点字符),后面跟一个单词边界。 我也在regex101上尝试过这一操作,但与数仍然不匹配:https://regex101.com/r/klkmwl/1 转义符并没有什么区别,我已经尝试使用十六进制转义序列来代替和符(如本问题所建议的)。为什么这不匹配?

  • 我正在使用这段代码使用正则表达式拆分字符串 该代码适用于我拥有的几乎所有字符串,但我面临着这两个字符串的问题:和。似乎模式不匹配,我认为是因为特殊字符和。 我的预期结果和。

  • 问题内容: 我在用Python将字符串中的数字匹配时遇到麻烦。尽管应该明确匹配,但甚至不匹配 或仅匹配。我的监督在哪里? 问题答案: 阅读文档:http : //docs.python.org/2/library/re.html#re.match 如果在零个或多个字符 开头 的 字符串 您要使用(或)

  • 问题内容: 我需要在PHP正则表达式中匹配一个空格字符。任何人有任何想法吗? 我的意思是像“ gavin schulz”一样,两个单词之间的空格。我使用正则表达式来确保只允许使用字母,数字和空格。但是我不确定如何找到空间。这就是我现在所拥有的: 问题答案: 如果您正在寻找一个空格,那就是(一个空格)。 如果要查找一个或多个,则为( 两个 空格和一个星号)或(一个空格和一个加号)。 如果您要查找公共