[英]Regular expression matching “dictionary words”
我是Java用户,但是对正则表达式不熟悉。
我只想有一个小表达式,给定一个单词(我们假设字符串只是一个单词),然后用一个布尔值回答,告诉该单词是否有效。
一个例子...我想捕捉所有可能出现在字典中的单词...所以,我只想要带有AZ AZ字符,连字符(例如:中间人)和撇号(例如I'll或Tiffany的撇号)。
有效词:
"food"
"RocKet"
"man-in-the-middle"
"kahsdkjhsakdhakjsd"
"JESUS"
等 无效字词:
"gipsy76"
"www.google.com"
"me@gmail.com"
"745474"
"+-x/"
等 我使用此代码,但不会给出正确的答案:
Pattern p = Pattern.compile("[A-Za-z&-&']");
Matcher m = p.matcher(s);
System.out.println(m.matches());
我的正则表达式有什么问题?
+
,以表示“这些字符中的一个或多个”: \\
转义连字符(或放在最后)。 &
字符: 这是代码:
Pattern p = Pattern.compile("[A-Za-z'-]+");
Matcher m = p.matcher(s);
System.out.println(m.matches());
完成测试:
String[] ok = {"food","RocKet","man-in-the-middle","kahsdkjhsakdhakjsd","JESUS"};
String[] notOk = {"gipsy76", "www.google.com", "me@gmail.com", "745474","+-x/" };
Pattern p = Pattern.compile("[A-Za-z'-]+");
for (String shouldMatch : ok)
if (!p.matcher(shouldMatch).matches())
System.out.println("Error on: " + shouldMatch);
for (String shouldNotMatch : notOk)
if (p.matcher(shouldNotMatch).matches())
System.out.println("Error on: " + shouldNotMatch);
(不产生任何输出。)
这应该工作:
"[A-Za-z'-]+"
但是“ -word”和“ word-”无效。 因此,您可以使用以下模式:
WORD_EXP = "^[A-Za-z]+(-[A-Za-z]+)*$"
正则表达式-/ ^([a-zA-Z] *('|-)?[a-zA-Z] +)* /
如果您不希望连续使用“'”或“-”,则可以使用上述正则表达式。 它将使您准确匹配您的文本。 它接受中间人asd'asdasd'asd
它拒绝跟随字符串man--in--midle asdasd''asd
嗨,Aloob,请检查一下,比特有点长,可能是它的较短版本,仍然...
[A-z]*||[[A-z]*[-]*]*||[[A-z]*[-]*[']*]*
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.