相关疑难解决方法(0)

参考 - 这个正则表达式意味着什么?

这是什么?

这是常见问答的集合.这也是社区Wiki,因此每个人都被邀请参与维护.

为什么是这样?

患的是给我泽码型的问题和答案不佳,没有解释.此参考旨在提供质量问答的链接.

范围是什么?

此引用适用于以下语言:,,,,,,.

这可能过于宽泛,但这些语言共享相同的语法.对于特定功能,它背后的语言标签,例如:

  • 什么是正则表达式平衡组?

regex

52
推荐指数
1
解决办法
11万
查看次数

正则表达式:星重复运算符的占有量词,即\ d**

从GLib参考手册的"正则表达式语法"部分,"原子分组和所有格量词"小节:

\d+foo在应用于字符串时考虑模式123456bar:在匹配所有6位数然后未匹配"foo"之后,匹配器的正常操作是再次尝试仅匹配\ d +项目的5位数,然后使用4,等等在最终失败之前.

如果我们使用(?>\d+)foo(称为原子分组)前一个例子,匹配器会在第一次未能匹配"foo"时立即放弃.

当原子组的子模式只是一个重复项时,如上例所示,可以使用更简单的表示法,称为"占有量词": \d++foo

我的问题是:有没有理由为什么star(*)重复运算符没有等价物?

Java中的示例:

final String in = "123456";
// "plus" (+)
System.out.println(in.matches("\\d+"));     // true
System.out.println(in.matches("(?>\\d+)")); // true
System.out.println(in.matches("\\d++"));    // true
// "star" (*)
System.out.println(in.matches("\\d*"));     // true
System.out.println(in.matches("(?>\\d*)")); // true
System.out.println(in.matches("\\d**"));    // exception
Run Code Online (Sandbox Code Playgroud)

异常堆栈跟踪是:

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 3
\d**
   ^
    at java.util.regex.Pattern.error(Pattern.java:1713)
    at java.util.regex.Pattern.sequence(Pattern.java:1878)
    at java.util.regex.Pattern.expr(Pattern.java:1752)
    at java.util.regex.Pattern.compile(Pattern.java:1460)
    at java.util.regex.Pattern.<init>(Pattern.java:1133)
    at java.util.regex.Pattern.compile(Pattern.java:823)
    at java.util.regex.Pattern.matches(Pattern.java:928)
    at java.lang.String.matches(String.java:2090)
Run Code Online (Sandbox Code Playgroud)

java regex quantifiers

1
推荐指数
1
解决办法
489
查看次数

Regex.IsMatch无效

如果值与某个条件匹配,则检查该值.值如下所示:

123456:123abc89是:0099 @ ABC123

这是我的C#程序分析值的方式:

if (Regex.IsMatch(input, "[0-9]:[a-zA-Z0-9]:[a-zA-Z0-9]@[a-zA-Z0-9]") == true)
{
    Console.WriteLine("Correct.");
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,它不起作用.你有什么想法?请记住,我是C#的新手.

c# regex

-5
推荐指数
1
解决办法
2366
查看次数

标签 统计

regex ×3

c# ×1

java ×1

quantifiers ×1