【发布时间】:2013-04-15 21:48:14
【问题描述】:
我在 Java 中有一个正则表达式:[^a-zA-Z0-9.-_]
这个从java到php的正则表达式如何形成?
【问题讨论】:
-
在大多数情况下,您可以在 许多 语言的正则表达式实现中使用 same 语法。在这种情况下(尽管很简单),PHP 和 Java 的语法应该是相同的。问:你试过吗?
我在 Java 中有一个正则表达式:[^a-zA-Z0-9.-_]
这个从java到php的正则表达式如何形成?
【问题讨论】:
在 php (PCRE) 中,这个正则表达式看起来像
[^a-zA-Z0-9.-_]
是的,一模一样
【讨论】:
这个特定的正则表达式是一样的。
但是您可以使用以下方法缩短:
[^\w.-]
别忘了 - 字符必须放在字符类的最后一个位置
【讨论】:
\w、\d、\s)仅包含 ASCII 字符,与语言环境无关。见pcre.org
完全相同但您可能需要在其周围放置分隔符,例如括号:
([^a-zA-Z0-9._-])
看到将减号移到末尾的细微差别。那是因为[.-_] 匹配./0...9:;<=>?@A...Z[\]^_。我猜你不是在寻找这个的否定,因为你已经覆盖了 0-9 和 A-Z。
【讨论】:
~、#)作为分隔符,以免您(和其他人)混淆() 是否是分隔符或捕获组。