2016-08-19 88 views
-3

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

问题是为java。 LE:代码接受一般的正则表达式和一般文本,所以它必须是一个通用的解决方案。

+1

你在用什么语言?而只是匹配所有不是字母的东西。然后你有你的123(或1,2,3) –

+0

该代码接受一般正则表达式和一般文本,所以它必须是一个通用的解决方案。 –

+0

有各种各样的正则表达式,'([^ a-zA-Z] {1,})'将在bigquery上工作。 –

回答

1

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

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

Example

+0

仅供参考更改的右侧可能变得更短'(。)' – revo

+0

你没有包含第一个/。为什么不 ?除此之外,该表达式可以是一般性的,并且我将其作为参数接收。 –

+0

如果你的正则表达式在开始时必须使用斜杠,那么你的输入字符串'ABCD123'永远不会匹配,预期的结果应该是A,B,C,D,1,2,3,而不仅仅是1,2,3 。你应该澄清这个问题。 @VisanCosmin – revo

0

包括捕获所有其他字符的交替:

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

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

Live demo

1

您也可以先检查正则表达式通,不用时 - 由另一个正则表达式中删除字符,然后你将有只有没有通过的字符。

伪代码:

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

你可以从正则表达式指定的字符串中删除吗?因为如果是这样的话,那么这就是解决方案。 –

+0

谷歌的第一个结果:http://stackoverflow.com/questions/11796985/java-regular-expression-to-remove-all-non-alphanumeric-characters-except-spaces –

+0

正则表达式可以用例如“/” “,然后允许信件。我如何只消除字母?正则表达式没有任何方法“regex.contains(”A“)”,那么如果正则表达式是“/ [A]”,如何从ABC中删除A? –

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

将匹配你的格局。

相关问题