Regex 如何让我的正则表达式达到我的目标?
这是我代码的一部分:Regex 如何让我的正则表达式达到我的目标?,regex,Regex,这是我代码的一部分: String subArray[]=sub.split(" "); StringBuilder patternbuilder=new StringBuilder(); for (int i = 0; i < subArray.length; i++) { patternbuilder.append("("+subArray[i]+" )"+"?"); } String subpattern=patternbuilder.toString(); Pattern
String subArray[]=sub.split(" ");
StringBuilder patternbuilder=new StringBuilder();
for (int i = 0; i < subArray.length; i++) {
patternbuilder.append("("+subArray[i]+" )"+"?");
}
String subpattern=patternbuilder.toString();
Pattern pattern=Pattern.compile(subpattern);
Matcher matcher = pattern.matcher(para);
while (matcher.find()) {
NamedEntity subEntity=new NamedEntity(jCas, matcher.start(), matcher.end());
subEntity.setValue(matcher.group());
}
String子数组[]=sub.split(“”);
StringBuilder patternbuilder=新StringBuilder();
对于(int i=0;i
这是我的正则表达式:(adam)?(hecktman)?
以下是示例文档:
在微软之前,亚当曾在安达信咨询公司担任顾问三年。在安达信咨询公司期间,亚当与客户合作,包括金融服务、政府和公用事业领域的客户。亚当获得了伊利诺伊大学(Unina)香槟分校的商业和商业管理专业((NM:理学士))。他还拥有工商管理硕士学位
我想提取模式,其中必须至少有一个单词
“adam hecktman”
,但我总是无法使用我的正则表达式。我总是得到一个空字符串。如何实现我的目标?正则表达式中的?
表示前面的组或字符可以选择性地出现。在您的原因中,这意味着可能发生adam
,也可能发生hecktman
。因此,它们都可以存在,但也可以不存在,因此空字符串满足这个正则表达式
您希望两个单词中的一个实际出现,因此请使用
|
运算符。这意味着双方中的一方都应该存在(假定子表达式后面没有?
)。在您的情况下,(adam)|(hecktman)
意味着正则表达式将匹配包含adam
或hecktman
的行。您可以使用以下正则表达式:
((adam)( hecktman)?)|(hecktman)
试试(亚当)|(赫克特曼)
。您的允许由于“?”而丢失它们。