从正则表达式中获取所有不匹配的字符

时间:2016-08-19 08:11:30

标签: java regex

我有一个正则表达式/[A-Za-z./-]+,我要测试的文字是ABCD123。在文本没有通过正则表达式后,我想显示正则表达式中根本没有包含的字符。所以在这种情况下,我想显示123或(1,2,3)。我怎么能这样做?

问题出在java。

LE:代码接受一般正则表达式和一般文本,因此它必须是一般解决方案。

4 个答案:

答案 0 :(得分:1)

你需要否定你的正则表达式:/([A-Za-z.\/-]+)|([^A-Za-z.\/-]+)/g

第二个捕获组是具有不匹配元素的组。

Example

答案 1 :(得分:1)

你也可以先检查regexp pass,如果没有 - 用另一个正则表达式删除字符,然后你将只有那些没有传递的字符。

伪代码:

if string is not '[A-Za-z./-]+' then
    wrong_chars = string.remove('[A-Za-z./-]+')

答案 2 :(得分:1)

([^a-zA-Z]{1,})

符合您的模式。

答案 3 :(得分:0)

包含捕获所有其他字符的替换:

[A-Za-z.\/-]+|(.)

这样,如果交替的左侧与整个输入字符串不匹配,则第一个捕获组中有一些值。

Live demo