java - 检查非标准字符的字符串
问题描述
我正在尝试在 json 文件中查找所有非标准字符。但是,我不太了解Pattern.compile(...)方法的正则表达式语法,无法指定我想要的内容。基本上,我希望它返回任何不是字母、数字、“[”、“{”、“:”、“\””、“”、“_”、“(”、“-”、 “.”、“\”、“/”
我只是想打印出带有特殊字符的行。
代码如下所示:
for (String line : lines) {
Pattern regex = Pattern.compile("[^a-zA-Z_0-9 && [[]] && [{}]");
Matcher m = regex.matcher(line);
boolean check = m.find();
if (check) {
System.out.println(line);
}
}
解决方案
这是您可以尝试的正则表达式:
[^\p{L}\p{N}\[\]{}:",_().\\/-]
一些注意事项:
\p{L}
匹配所有语言的所有 unicode 字母。A-Za-z
如果您只关心英文字母,请替换为。- 同样,
\p{N}
匹配所有 unicode 数字符号。0-9
如果您只关心拉丁字母中的数字,请替换为。 [
,]
, 并且\
需要被前面的 转义\
,否则它们在正则表达式本身中具有特殊含义。- 也是如此
-
,但是通过将它放在最后,它不需要被转义。
然后为了将其表示为 Java 字符串常量,您需要担心在 Java 字符串语法中具有特殊含义的字符:"
和\
. 因此,所有出现的"
和\
在正则表达式中都必须在 Java 代码中转义:
"[^\\p{L}\\p{N}\\[\\]{}:\",_().\\\\/-]"
推荐阅读
- c++ - std::map 到 std::list 导致 SIGSEGV
- c - Pcap_inject 发送太多消息
- kendo-ui - 将滚动条添加到 kendo.alert 对话框
- python - IndexError:元组索引超出范围
- phpstorm - PhpStorm - 初始化所有方法的字段(不仅用于 __construct)
- javascript - 在将属性分配给 JavaScript 中的对象之前验证/预处理属性
- java - 如何在soapui中运行Jar文件
- javascript - 在将产品添加到购物车之前,如何禁用“查看购物车”btn?
- php - MYSQL PDO 从 fetchAll 获取多行不起作用
- android - 如何防止我的应用在另一个应用中打开?