在java中,如何使用正则表达式在输入字符串中查找确切的单词?
我在spring配置文件中定义了一个列表,如下所示:-在java中,如何使用正则表达式在输入字符串中查找确切的单词?,java,regex,Java,Regex,我在spring配置文件中定义了一个列表,如下所示:- <bean id="LatinExpressions" class="org.springframework.beans.factory.config.ListFactoryBean" scope="singleton"> <property name="sourceList"> <list> <value>ad lib\.<
<bean id="LatinExpressions" class="org.springframework.beans.factory.config.ListFactoryBean" scope="singleton">
<property name="sourceList">
<list>
<value>ad lib\.</value>
<value>ad libitum</value>
<value>ca</value>
<value>ca\.</value>
<value>circa</value>
<value>cet\. par\.</value>
<value>ceteris paribus</value>
<value>cf\.</value>
<value>e\.g\.</value>
<value>i\.e\.</value>
<value>in vacuo</value>
<value>in situ</value>
<value>in vitro</value>
<value>in vivo</value>
<value>inter alia</value>
<value>versus</value>
<value>vice versa</value>
<value>vide infra</value>
<value>vide supra</value>
<value>viz\.</value>
<value>vs</value>
<value>vs\.</value>
<value>versus</value>
<value>in priori</value>
<value>etc\.</value>
</list>
</property>
</bean>
即兴。
随意
ca
ca\。
大约
cet\。标准杆\。
其他同等条件
cf\。
例如。
即。
真空中
原位
体外
体内
除其他外
对
反之亦然
见下文
见上文
维兹\。
vs
vs\。
对
先验地
等\。
我的任务是扫描列表中这些元素的输入,并计算它们是否以斜体或罗马字母出现。为此,我编写了一个模式,它几乎适用于除某些情况外的所有情况。下面是我写的方法:-
private String maintainRomanOrItalicConsistencyInArticle(String currentLine){
int latinromanOcurrenceinContent=0;
int latinitalicOccurenceinContent=0;
ApplicationContext ctx = new ClassPathXmlApplicationContext("latinexpressions.xml");
@SuppressWarnings("unchecked")
List<String> latinExpressions = (List<String>)ctx.getBean("LatinExpressions");
for(String latinexp : latinExpressions){
Pattern findRomanItalics = Pattern.compile("((<em>)?)\\b"+ latinexp+"(,|\\s){0,}(\\b)?((</em>)?)");
Matcher findRomanItalicsMatcher = findRomanItalics.matcher(currentLine);
while(findRomanItalicsMatcher.find()){
if(findRomanItalicsMatcher.group(1)!=null && findRomanItalicsMatcher.group(5)!=null){
latinitalicOccurenceinContent+=1;
}
else{
latinromanOcurrenceinContent +=1;
}
}
}
if(latinromanOcurrenceinContent>latinitalicOccurenceinContent){
System.out.println("latinromanOcurrenceinContent:::" + latinromanOcurrenceinContent);
}
else{
System.out.println("latinitalicOccurenceinContent::" +latinitalicOccurenceinContent);
}
return currentLine;
}
private String maintenantRomanoritalicConsistenceInarticle(String currentLine){
int拉丁罗马语发生率=0;
int-latinitalicOccurenceinContent=0;
ApplicationContext ctx=新类路径XmlApplicationContext(“latinexpressions.xml”);
@抑制警告(“未选中”)
List latinExpressions=(List)ctx.getBean(“latinExpressions”);
for(字符串拉丁表达式:拉丁表达式){
Pattern findRomanItalics=Pattern.compile((()?)\\b“+latinexp+”(,| \\s){0,}(\\b)?(()?)”;
Matcher findRomanItalicsMatcher=findRomanItalics.Matcher(currentLine);
while(findRomanItalicsMatcher.find()){
if(findRomanItalicsMatcher.group(1)!=null&&findRomanItalicsMatcher.group(5)!=null){
拉丁美洲营养素含量+=1;
}
否则{
拉丁罗马语发生率+=1;
}
}
}
if(拉丁拉丁语发生率>拉丁语发生率){
System.out.println(“拉丁语内容::”+拉丁语内容);
}
否则{
System.out.println(“拉丁语内容::”+拉丁语内容);
}
回流线;
}
我正在测试的输入是:=“例如,试一下这个随意的、circa、paribusare拉丁表达式。下面的列表还包含一些拉丁表达式:-随意的,特别是,vide infra,vide infrain priori,cate。这是ca,随意的;
我的问题是,我的模式还发现cate
,如下所示:-
<bean id="LatinExpressions" class="org.springframework.beans.factory.config.ListFactoryBean" scope="singleton">
<property name="sourceList">
<list>
<value>ad lib\.</value>
<value>ad libitum</value>
<value>ca</value>
<value>ca\.</value>
<value>circa</value>
<value>cet\. par\.</value>
<value>ceteris paribus</value>
<value>cf\.</value>
<value>e\.g\.</value>
<value>i\.e\.</value>
<value>in vacuo</value>
<value>in situ</value>
<value>in vitro</value>
<value>in vivo</value>
<value>inter alia</value>
<value>versus</value>
<value>vice versa</value>
<value>vide infra</value>
<value>vide supra</value>
<value>viz\.</value>
<value>vs</value>
<value>vs\.</value>
<value>versus</value>
<value>in priori</value>
<value>etc\.</value>
</list>
</property>
</bean>
我只需要找一辆不能提供服务的汽车或出租车
请帮忙
谢谢。您已在正则表达式中指定空格或“,”的出现次数为0或更多。匹配“cate”的导联。您需要的是
{1,}
,以便只匹配完整的字符,因为单词将以标点符号结尾。您可能还需要将(,| \\s)
替换为(,| \\s\\。)
EPP截图!是的!一个强大的武器。:)仅供参考:{0,}
与*
相同,{1,}
与+
相同,通常使用后一种版本。