Regex 这个正则表达式做什么?棒极了

Regex 这个正则表达式做什么?棒极了,regex,grails,groovy,Regex,Grails,Groovy,我需要了解这个正则表达式的功能,但是阅读groovy.codehaus中关于正则表达式的文档似乎对我没有帮助 matches: "[\\p{L}\\p{N}\\s-.()_&]+" 对于任何提示,请提前感谢首先,所有反斜杠都将转义,因此[\\p{L}\\p{N}\\s-。()&]+将被理解为 [\p{L}\p{N}\s-.()&]+ []是一个字符类,它匹配两个括号之间的任何内容,语法如下: \p{L}匹配Unicode属性L,字母 \p{N}匹配Unicode属性N,number

我需要了解这个正则表达式的功能,但是阅读groovy.codehaus中关于正则表达式的文档似乎对我没有帮助

matches: "[\\p{L}\\p{N}\\s-.()_&]+"


对于任何提示,请提前感谢首先,所有反斜杠都将转义,因此
[\\p{L}\\p{N}\\s-。()&]+
将被理解为
[\p{L}\p{N}\s-.()&]+

[]
是一个字符类,它匹配两个括号之间的任何内容,语法如下:

\p{L}
匹配Unicode属性L,字母
\p{N}
匹配Unicode属性N,number
\s
是任何空白字符
-.()&?
在字符类中没有特殊的含义,因此可以逐字读取

因此,
[\p{L}\p{N}\s-.()&]
匹配上述四个选项中的任何单个字符。
末尾的
+
表示“一个或多个”


基本上,它是Unicode版本的
[a-zA-Z0-9\s-.()&]+
或更短的
[\w\s-.()&]+

首先,所有反斜杠都被转义,因此
[\\p{L}\\p{N}\\s-.()&]+
被理解为
[\p{L}\p{N}\s-.()&]+

[]
是一个字符类,它匹配两个括号之间的任何内容,语法如下:

\p{L}
匹配Unicode属性L,字母
\p{N}
匹配Unicode属性N,number
\s
是任何空白字符
-.()&?
在字符类中没有特殊的含义,因此可以逐字读取

因此,
[\p{L}\p{N}\s-.()&]
匹配上述四个选项中的任何单个字符。
末尾的
+
表示“一个或多个”


基本上,它是Unicode版本的
[a-zA-Z0-9\s-.()&]+
或更短的
[\w\s-.()&]+

检查,结果是
\\p{L}
将匹配一个字母,
\\p{N}
将匹配一个数字,
\\s
将匹配一个空格,等等。我有点担心
\\s-。
因为我担心它会匹配一个范围,但不确定…@HamZa
\\s-。
会匹配空格、连字符或点(因为它在字符类中)@tim_-yates-Heh,我确认了。当我说“Read”时,我指的是2个字符之间的范围,所以让我们看看<代码> [s-…] /代码>它看起来确实是匹配了一个空格、连字符或点。但是如果我们使用
[-.]
,它会根据。结论:如果我们使用
\s
将没有范围。感谢链接regexp.reference.unicode.php——我现在可以更清楚地看到check,它的结果是
\\p{L}
将匹配一个字母,
\\p{N}
将匹配一个数字,
\\s
将匹配一个空格,等等。我有点担心
\\s-。
因为我担心它会匹配一个范围,但不确定…@HamZa
\\s-。
会匹配空格、连字符或点(因为它在字符类中)@tim_-yates-Heh,我确认了。当我说“Read”时,我指的是2个字符之间的范围,所以让我们看看<代码> [s-…] /代码>它看起来确实是匹配了一个空格、连字符或点。但是如果我们使用
[-.]
,它会根据。结论:如果我们使用
\s
将没有范围。感谢链接regexp.reference.unicode.php——我现在可以更清楚地看到+1意味着:至少有一件事,它们都必须是字母、数字、空格字符和字符集
-。()&
嘿,谢谢你拆分这个,这让我理解它,并以我想要的方式改进它:D cheers+1这意味着:至少有一件事,它们都必须是字母、数字、空格字符和字符
-。()&
嘿,谢谢你拆分这个,这让我理解它,并以我想要的方式改进它:D cheers