Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,如何使用正则表达式在输入字符串中查找确切的单词?_Java_Regex - Fatal编程技术网

在java中,如何使用正则表达式在输入字符串中查找确切的单词?

在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\.<

我在spring配置文件中定义了一个列表,如下所示:-

<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,}
+
相同,通常使用后一种版本。