2010-02-22 45 views
1

我有这样一个文本文件里的句子:为什么我的正则表达式不匹配?

==Text== 

我想开始匹配,使用此:

line.matches("^==[^=]") 

然而,这返回的每一行假...帮助不大?

+0

这是什么语言?如果它是Java,肯定会尝试匹配整条线。这会失败,因为[^ =]最终不匹配,使整行不匹配,返回false – Tarka 2010-02-22 22:02:17

回答

4

matches自动锚定正则表达式,所以正则表达式必须匹配整个字符串。尝试:

line.matches("==[^=].*") 
7

我记得,方法matches()只搜索精确匹配。

+0

完全匹配。 – 2010-02-22 22:01:49

+0

这是真的,文档可以更清楚地说明它 - http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html – mob 2010-02-22 22:09:02

0
try line.matches("^==[^=]*==$") 
+2

已修复它为雅。 – 2010-02-22 22:03:37

0

line.matches("^==(.+?)==\\s*$")

0

.matches尝试仅仅返回true,如果整条生产线相匹配。在你的情况下,该行必须以'=='开头,并且只包含一个不等于的字符。如果您正在寻找为整个行字符串匹配:

line.matches( “== [^ =] * ==”)

+0

这应该产生==的匹配,后面跟随任意的非等号字符,接着是另一个==。 – TheJacobTaylor 2010-02-22 22:05:35

+0

无赖,小修改移动我的答案看起来比它更新。 – TheJacobTaylor 2010-02-22 22:06:16

0

如果我没有记错,matches只会返回如果整行与正则表达式匹配,则返回true。在你的情况下它不会。要使用matches,您需要扩展正则表达式(使用通配符)以匹配行末。或者,您可以使用Matcher.find()方法来匹配该行的子字符串

1

如果它很简单,也可以使用String.startsWith("==");

相关问题