我正在使用此模式检查字符串是否在冒号前面至少以2个字母字符开头:
string.matches("^\\p{IsAlphabetic}{2,}:")
但是我遇到了以下异常:
java.util.regex.PatternSyntaxException: Unknown character property name {Alphabetic} near index 16
^\p{IsAlphabetic}{2,}:
^
at java.util.regex.Pattern.error(Pattern.java:1730)
at java.util.regex.Pattern.charPropertyNodeFor(Pattern.java:2454)
at java.util.regex.Pattern.family(Pattern.java:2429)
at java.util.regex.Pattern.sequence(Pattern.java:1848)
at java.util.regex.Pattern.expr(Pattern.java:1769)
at java.util.regex.Pattern.compile(Pattern.java:1477)
at java.util.regex.Pattern.<init>(Pattern.java:1150)
at java.util.regex.Pattern.compile(Pattern.java:840)
at java.util.regex.Pattern.matches(Pattern.java:945)
at java.lang.String.matches(String.java:2102)
即使Pattern类的规范指出:
与IsAlphabetic中一样,二进制属性以前缀Is指定。Pattern支持的二进制属性是
- 字母顺序
- 表意文字
- 信
- …
以及 Unicode脚本,块,类别和二进制属性 列表的类部分
\p{IsAlphabetic} An alphabetic character (binary property)
使用Java 1.8工作并返回true。
String s = "äö:";
System.out.println(s.matches("^\\p{IsAlphanumeric}{2,}:"));
请注意,Java 1.7中的可用格式-Alpha,IsAlpha-不一定包含非US-ASCII的字符。这将返回false:
String s = "äö:";
System.out.println(s.matches("^\\p{IsAlpha}{2,}:"));
但是请注意,这在1.7中有效并返回true:
String s = "äö:";
Pattern pat = Pattern.compile( "^\\p{Alpha}{2,}:",
Pattern.UNICODE_CHARACTER_CLASS );
Matcher mat = pat.matcher( s );
System.out.println(mat.matches());
问题内容: 我正在使用此模式检查字符串是否在冒号前面至少以2个字母字符开头: 但是我遇到了以下异常: 即使Pattern类的规范指出: 与IsAlphabetic中一样,二进制属性以前缀Is指定。Pattern支持的二进制属性是 字母顺序 表意文字 信 … 以及 Unicode脚本,块,类别和二进制属性 列表的类部分 问题答案: 使用Java 1.8工作并返回true。 请注意,Java 1.7中
问题内容: 原始数据是: 我想匹配一条线,但是不能使用 但是,我可以使用match 。 我该如何搭配 问题答案: 默认情况下,和分别匹配输入的开始和结束。您需要使用启用多行模式,这会导致并匹配行的开始和结束: 演示: 产生以下输出: 编辑我 没有任何匹配的事实是因为默认情况下,和不匹配。如果您通过启用了DOT-ALL ,也使匹配了它们,那么您将看到整个输入字符串都被匹配了: 编辑二 在这种情况下,
问题内容: 示例字符串: 我想先进行匹配,然后将其替换为一些文本,以使字符串变为,然后进行匹配。 问题答案: 令人讨厌的是,Javascript没有提供PCRE递归参数,因此要处理嵌套问题远非易事。但是可以做到的。
问题内容: 当字符串以数字开头时,我需要匹配,然后是一个点,然后是一个空格和1个或多个大写字符。匹配必须发生在字符串的开头。我有以下字符串。 我尝试过的正则表达式是: 它不匹配。一个有效的正则表达式将对这个问题有什么作用? 问题答案: (对不起,我先前的错误。大脑现在坚定地投入了。嗯,也许。) 这有效: 分解: =字符串开头 =一个或多个数字 (之所以转义,是因为它在字符串中,因此) =文字(或者
问题内容: 我从以下格式的文件中获取输入: 现在,我想在我的Java代码中读取int1,int2,int3和int4。我该如何在Java中使用正则表达式匹配。谢谢。 问题答案: 为了避免空值:
问题内容: 我想匹配这样的电话号码,它应该有3位数字(000,666除外)以及900-999之间的任何数字,然后是-然后是2位数字,然后是- 然后是4位数字。例如:123-75-3456是数学000- 23-3452不是匹配项(否000)915-23-4534不是匹配项(大于900)有人可以帮忙吗?抱歉,忘记添加我尝试的内容,[0-9 && ^ [000,666,[900-999]] {3}-[0