java中的正则表达式,用于句子中的前三个字母

时间:2013-10-10 13:36:41

标签: java regex

如何在java中为下面类似的句子写一个正则表达式,并且只能匹配句子的前三个字符

ins(clear(icl>remove>do,plf>thing,obj>thing,ins>thing).@entry.@past,evidence(icl>indication>thing))

我尝试了这段代码,但它也符合句子中明确的证据......

String pattern2="[-a-z0-9R:._-`&=*'`~\"\\+[\\s]]+[\\(]";  

Pattern r2 = Pattern.compile(pattern2);
Matcher m2 = r2.matcher(line);


 while (m2.find()) 
 {
     rel = m2.group();
     rel = rel.substring(0, rel.length()-1).trim();                 
     System.out.println("The relation are " + rel); 
 }

4 个答案:

答案 0 :(得分:1)

我想你应该首先删除所有非字母

String result = string.replaceAll("[^a-zA-Z]", "");

然后只取前三个符号:

result.substring(0, 3)

答案 1 :(得分:1)

如果您只想从该行的开头获得匹配,则可以在正则表达式的开头(^之前)添加[

如果您想确保(之前匹配的部分有3个字符,请不要使用..]+,而是使用..]{3}

此外,如果您只是想检查一些字符是否在有趣的部分之后,但您不想包含它们,请使用预测机制(?=...),例如您的(?=[\\(])或更简单{{1 - 无需同时与(?=[(])(一起转义\\

所以可能会将你的模式改为

[]

此外,我不确定String pattern2 = "^[-a-z0-9R:._-`&=*'`~\"+\\s]{3}(?=[(])"; 是否是您的意思,因为它会在_-`_

之间创建一系列字符

答案 2 :(得分:1)

此正则表达式匹配前3个字符:

^...

答案 3 :(得分:0)

此...

String pattern2="^[^\\(]+";