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