【发布时间】:2015-06-17 01:46:38
【问题描述】:
虽然我阅读了大量关于该主题的帖子(特别是使用环视法),但我不明白这种更一般的情况是否可以使用正则表达式来解决。
设置:
1)
传入一个输入正则表达式
2) 输入的正则表达式被嵌入到一个负正则表达式中,这样
3) 输入正则表达式未识别的任何内容都匹配
示例:
给定:
input regex: "[-//s]";
和
text: "self-service restaurant"
我想要一个否定的正则表达式来嵌入我的输入正则表达式,以便我可以将我的文本匹配为:
"self", "service", "restaurant"
重要的是,负正则表达式也应该能够匹配一个简单的字符串,例如:
"restaurant"
注意,我想要做的可以通过更改输入正则表达式来实现
"[-//s]"
到
"[^-//s]"
然而,我正在寻求一种更通用的方法,其中任何正则表达式都可以传递到负正则表达式中。
【问题讨论】:
-
试试
[^-\\s]+。对所有人都使用相同的。 -
看起来你想
split你的字符串在传递的正则表达式上(你可能只想用(?:userRegex)+包围传递的正则表达式以避免像"fo--o".split("-")这样的空结果,结果是["fo", "", "o"])。 -
String myRegex = "[^" + "yourRegexHere"可能会成功,如果我正确理解您的问题。 -
一般来说,没有“负正则表达式”之类的东西。唯一可以否定的正则表达式是字符类。甚至为
ab这样简单的东西写否定句也相当复杂。
标签: java regex regex-lookarounds negation