我遇到以下问题:
我的应用程序中的某处有一些字符串需要检查 - 检查该字符串是否包含与 " "
不同的字符(空白),/n
和/r
例如:
-
" g"
- 包含 -
" /n "
- 不包含 -
" "
- 不包含
我想在 reg 表达式中执行此操作,但我不想使用常见模式 .*[a-zA-Z0-9]+.* .
相反,我想要类似 .*[!" ""/n"/r"]
的东西。 (不同于 " "
"/r"
和 "n"
的每个字符)。
我的问题是
- 我不知道这个模式是否有效(上面的模式不起作用)
- 我不确定这是否会比使用更快 常规字符串方法。
最佳答案
首先,你的意思是\n
和\r
,在 Java 中,这意味着使用 \\n
转义反斜杠。和\\r
.
其次,如果您只是想捕获任何非空白字符,只需使用模式 \\S*
或[^\\s]
。 \S
是非空白,或者 \s
是空格且 [^<charset>]
意思是“匹配除其中之一之外的任何内容。”
第三,如果这是重复检查,请确保仅编译正则表达式一次,然后多次使用它。
第四,遵循通常的分析策略。首先,这是您应用程序中的关键 strip 吗?如果是这样,那么就对自己进行基准测试。
关于java性能问题-正则表达式VS内部String方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14221257/