Java正则表达式查找除';之外的所有内容';
我正在尝试编写一个正则表达式,该正则表达式将查找除Java正则表达式查找除';之外的所有内容';,java,regex,Java,Regex,我正在尝试编写一个正则表达式,该正则表达式将查找除之外的所有内容。-也就是说,一个只包含”的字符串。应返回false,其他所有内容均应返回true String regex = "(?!(^\\.$)).*"; String test = "."; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(test); System.out.println(matcher.find()); 这应该可以
之外的所有内容。
-也就是说,一个只包含”的字符串。
应返回false
,其他所有内容均应返回true
String regex = "(?!(^\\.$)).*";
String test = ".";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(test);
System.out.println(matcher.find());
这应该可以帮到你。你需要使用锚定
来确保你没有进行任何部分匹配
这应该可以帮到你。你需要使用
锚定
来确保不进行任何部分匹配。你真的需要正则表达式吗,只需使用字符串比较:
if (!".".equals(test)) {
// not equal to a dot
}
您真的需要正则表达式吗?只需使用字符串比较:
if (!".".equals(test)) {
// not equal to a dot
}
我想这可以完成任务。
[^.]..|[.].+
,我尝试了15种不同的输入,但在尝试查找时它只会显示false
说明:
[^.].
-匹配以无点字符开头的所有字符,然后匹配0个或更多其他字符
[.].+
-匹配以点开头的所有字符,后跟至少一个或多个其他字符
[^.].[.].+
-这两个部分都与运算符“或”合并,我认为这可以完成工作[^.]..[.].+
,我尝试了15种不同的输入,在尝试查找时它只会显示false
说明:
[^.].
-匹配以无点字符开头的所有字符,然后匹配0个或更多其他字符
[.].+
-匹配以点开头的所有字符,后跟至少一个或多个其他字符
[^.].|[.].+
-这两部分都与运算符“或”合并,我看不出您的代码有任何错误。你能具体说明问题出在哪里吗?我想这会解决问题[^\\.$]...*。foo.bar
或。
?我看不出你的代码有什么问题。你能确切地说明问题是什么吗?我想这将完成任务[^\\\.$]..*。foo.bar
或的结果应该是什么。
?此正则表达式与原始正则表达式几乎相同。@Unihedro这将不会使OP
的正则表达式的部分匹配make@LuiggiMendoza当
在[]内时
你不需要逃避它。@vks谢谢,这似乎对我有用。但是,.*$的结尾不匹配吗?此正则表达式与原始正则表达式几乎相同。@Unihedro这将不会进行部分匹配,而OP
的正则表达式将进行部分匹配make@LuiggiMendoza当
在[]
内时,您不需要逃避它。@vks谢谢,这似乎对我有用。然而,.*$的意思不是在最后匹配任何东西吗?不幸的是,我们正在使用的api只接受一个模式,并使用matcher.find来查找。如果(!matcher.find()),则可以使用?不幸的是,我们正在使用的api只接受一个模式,并使用matcher.find来查找。如果(!matcher.find()),则可以使用
?是否使用find
方法对其进行了测试?还有,您的测试用例是什么?您是否尝试匹配$
?是的,但不幸的是,我发现对于像“…”或“…”这样的输入,此正则表达式失败:(我编辑过,我认为现在它可以工作了!几乎。您忘记了一个特殊情况:空字符串“”
不是以点或非点开头的。很好!但我不确定这在他的情况下是否是有效的输入,如果是,我们可以在正则表达式末尾添加^$
以匹配该场景。您是否使用find
方法进行了测试?您的测试用例是什么?您是否尝试匹配$
?是的,但不幸的是,我发现了但是对于像“…”或“…”这样的输入,这个正则表达式失败了:(我编辑过,我想现在它可以工作了!差不多了。您忘记了一个特殊情况:空字符串“”
既不是以点开头,也不是以非点开头。很好!但我不确定这在他的情况下是否是有效的输入,如果是,我们可以在我的正则表达式末尾添加^$
,以匹配该场景。