Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解释正则表达式_Java_Regex - Fatal编程技术网

Java 解释正则表达式

Java 解释正则表达式,java,regex,Java,Regex,我正在尝试记录使用常规表达式的验证规则的英文解释。我有两个地方我搞不清楚,我查遍了,找不到关于我在下面识别的表达式片段的任何信息: [^<>()[\]\\.,;:\s@\""] “或”没有定义(至少我能找到) 我的印象是反斜杠不应该是独立的,也就是说,它们要么逃避某些特殊字符,要么成对使用来表示反斜杠本身 如果有帮助,完整的正则表达式是: ^((([^<>()[\]\\.,;:\s@\""]+(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"

我正在尝试记录使用常规表达式的验证规则的英文解释。我有两个地方我搞不清楚,我查遍了,找不到关于我在下面识别的表达式片段的任何信息:

[^<>()[\]\\.,;:\s@\""]
“或”没有定义(至少我能找到) 我的印象是反斜杠不应该是独立的,也就是说,它们要么逃避某些特殊字符,要么成对使用来表示反斜杠本身

如果有帮助,完整的正则表达式是:

^((([^<>()[\]\\.,;:\s@\""]+(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,})))$
(([^()[\]\\,;:\s@\\]+(\.[^()[\]\,;:\s@\]+*)(\.+\)@(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.+]$

感谢您的帮助!

正则表达式可能很难理解

基本上,方形父项表示表达式将匹配其中的任何字符。
\s
表示空格的表达式

试一试

另外,我可以强烈推荐它还有表达式的措辞。它还为您生成代码,以确保您正确转义字符

由于
\
在编程语言中既是一个转义字符,也是一个用于定义表达式中的内容的字符,因此您可能会遇到一些使表达式难以读取的情况

看起来这正是您在
\“”

另一部分:
\”“。+\”“
似乎匹配
双引号,后跟任意字符,一到无限次,然后以另一个双引号结尾

问题在于,您使用的编程语言如何确保在表达式中包含这些双QOUTE,而不是我认为的代码。

正则表达式可能很难理解

基本上,方形父项表示表达式将匹配其中的任何字符。
\s
表示空格的表达式

试一试

另外,我可以强烈推荐它还有表达式的措辞。它还为您生成代码,以确保您正确转义字符

由于
\
在编程语言中既是一个转义字符,也是一个用于定义表达式中的内容的字符,因此您可能会遇到一些使表达式难以读取的情况

看起来这正是您在
\“”

另一部分:
\”“。+\”“
似乎匹配
双引号,后跟任意字符,一到无限次,然后以另一个双引号结尾

问题在于,您使用的编程语言如何确保在表达式中包含这些双引号,而不是我认为的代码。

可能是这个正则表达式是用一种语言编写的,在这种语言中,双引号字符是通过将两个字符放在一起进行转义的。我想可能是VB(.Net)做的


在这种情况下,
\“
将被这种语言解析为
\”
,然后在正则表达式中被解析为

,这可能是因为这个正则表达式是用一种语言编写的,在这种语言中,双引号字符通过将两个字符放在一起进行转义。我想可能是VB(.Net)做的


在这种情况下,
\”
将被此语言解析为
\”
,然后在正则表达式中解析为

,给定原始正则表达式:

^((([^<>()[\]\\.,;:\s@\""]+(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,})))$
请注意,这个正则表达式还有其他一些小问题(更多信息请参见谷歌“电子邮件验证”),而且,许多分组括号是不必要的


最后一条评论-Java在编写和评论正则表达式时很糟糕!

考虑到您原来的正则表达式:

^((([^<>()[\]\\.,;:\s@\""]+(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,})))$
请注意,这个正则表达式还有其他一些小问题(更多信息请参见谷歌“电子邮件验证”),而且,许多分组括号是不必要的


最后一条评论-Java在编写和注释正则表达式时很糟糕!

使用哪种语言来处理此问题。我的理解与你的理解相同。你可能唯一需要解决的问题是\““OP似乎在Frozed的回答中注意到正则表达式是由外部方使用的,因此这可能不是Java代码中使用的正则表达式。您需要发布编写正则表达式的实际代码(如提交给编译器的)。引号、反斜杠和oter元字符的特定于语言的转义是一个棘手的问题。字符串解释需要一组转义,正则表达式引擎需要另一组转义。它们是按顺序处理的。使用哪种语言来处理这些。我的理解和你的一样。对您来说唯一的开放项可能是\“”,OP似乎在Frozed的回答中注意到regex由外部方使用,因此这可能不是Java代码中使用的regex。您需要发布编写regex的实际代码(如提交给编译器的)。引号、反斜杠和oter元字符的特定于语言的转义是一个棘手的问题。字符串解释需要一组转义,正则表达式引擎需要另一组转义。它们是一系列处理的。啊,我没有把加号看作基数,这很好。这实际上是一个由外部公司使用的正则表达式,我们向其发送信息,所以我将带着这个返回给他们,因为正如你所指出的,这可能是他们特定的东西,或者他们如何处理这些数据,他们的编程语言等等。。。我只是认为我应该能够在正则表达式中找到关于所有内容的信息,但正如你们中的一些人所指出的,我猜这不一定是真的。谢谢你的反馈!啊,我不认为加号是基数,好的观点。这实际上是一个由外部公司使用的正则表达式,我们向其发送信息,所以我将带着这个返回给他们,因为正如你所指出的,这可能是他们特定的东西,或者他们如何处理这些数据,他们的编程语言等等。。。I j