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

将Unicode字母与Java正则表达式匹配(例如)

空正豪
2023-03-14
问题内容

在StackOverflow上有很多问题和答案,假设可以在regexp中使用来匹配“字母”
[a-zA-Z]。但是,使用Unicode时,会有更多的字符被大多数人视为字母(所有希腊字母,Cyrllic
..等等)。Unicode定义了许多块,每个块可能都有“字母”。

Java定义
为诸如字母字符之类的东西定义了Posix类,但是被指定为仅与US-
ASCII一起使用。预定义的字符类将单词定义为[a-zA-Z_0-9],其中还包括许多字母。

那么,如何正确匹配Unicode字符串呢?还有其他一些库可以解决这个问题吗?


问题答案:

在这里,您有一个很好的解释:

http://www.regular-expressions.info/unicode.html

一些提示:

“不幸的是,Java和.NET尚不支持\X\P{M}\p{M}*用作替代。要匹配任意数量的字素,请使用(?:\P{M}\p{M}*)+而不是\X+。”

“在Java中,\uFFFF即使打开了规范等效功能,正则表达式令牌也仅与指定的代码点匹配。但是,相同的语法\uFFFF也用于将Unicode字符插入Java源代码的文字字符串中。Pattern.compile("\u00E0")这两个代码都将匹配的-
点和双代码点编码à,而Pattern.compile("\\u00E0")仅匹配单代码点版本。请记住,将正则表达式编写为Java字符串文字时,必须转义反斜杠。前者Java代码编译regex
à,后者编译\u00E0。根据您所执行的操作,差异可能会很大。”



 类似资料:
  • 问题内容: 我需要将Python中的一个表达式与仅匹配偶数个字母出现的正则表达式进行匹配。例如: 偶数应匹配。 问题答案: 试试这个正则表达式: 并且如果s不需要是连续的:

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 我有一根线,比如: 如何匹配每行的最后一个?顺便说一句,这是我试图在Sublime的文本中做到的。这些值不一致,就像我在这里看到的,我有几百行要替换。 我尝试了,但这与相匹配。

  • 问题内容: 我已经阅读了Stackoverflow上的其他问题,但还没有结束。抱歉,如果已经可以回答,但是我没有任何建议在那里工作。 一切都很好,然后我尝试使用其中包含挪威字符的内容(或更像unicode的内容): 如何匹配øæå等典型的unicode字符?我希望能够同时在上述标记组和文件名标记组中匹配这些字符。 问题答案: 您需要指定标志, 并 使用前缀将您的字符串输入为Unicode字符串:

  • 问题内容: 我正在尝试制作一个Java正则表达式,以使用Pattern.split()将常规格式“ foo-bar”的字符串拆分为“ foo”和“ bar”。“-”字符可以是几个破折号之一:ASCII’-‘,em-破折号,en-破折号等。我构造了以下正则表达式: 如果我正确阅读了Pattern文档,则当在两边都被空格包围时,应该捕获任何Unicode破折号或ASCII破折号。我使用的模式如下: 不

  • 问题内容: 我没有JavaScript方面的丰富经验,但是我正在尝试创建一个标记系统,而不是使用or ,而是使用。 我该如何使用而不是。我尝试做并添加,但是失败了。 问题答案: 您可以这样逃避它。 或只使用indexOf