【发布时间】:2011-06-08 13:16:22
【问题描述】:
我不是正则表达式方面的专家,但我需要解析一些我无法控制的输入,并确保过滤掉所有没有 A-z 和/或 0-9 的字符串。
当我运行它时,
Pattern p = Pattern.compile("^[a-zA-Z0-9]*$"); //fixed typo
if(!p.matcher(gottenData).matches())
System.out.println(someData); //someData contains gottenData
某些空格 + 一个未知符号以某种方式通过过滤器(gottenData 是红色矩形):
如果您想知道,它也会显示文本,但并非都是这样。
现在,我不介意 [?] 只要它还包含一些字符串。
请帮忙。
[EDIT] 据我从(非常大的)输入中可以看出,[?] 要么是空格要么什么都没有;也许有某种编码问题,也可能与#text节点有关(输入是xml)
【问题讨论】:
-
你为什么不用
\w来表示ASCII字母、ASCII数字或下划线?当然,如果这不是 7 位数据,则需要使用\pL之类的属性。 -
如果我使用 .matches("\\w"),同时包含文本和 [?] 的结果将不会显示。即“ImportantText[?]”将被过滤掉。
-
你是 100%
???字符通过正则表达式吗?它们不是字符集修饰或其他字符串/变量之类的副作用吗?你现在在那里的正则表达式不应该传递特殊字符,除非还有其他事情发生......
标签: java regex spaces alphanumeric