java中的单词regex

java中的单词regex,java,regex,Java,Regex,我尝试编写正则表达式,检查字符串中是否包含某些单词,即one或two将是这些关键字。它们可以出现在句子的任何地方 字符串不应该有任何数字,只有字母。如果它没有数字并且有1或2我应该返回true 以下是我的尝试: ^([one|two]*\D*[one|two]*)$ 但它匹配空字符串或任何不带数字的字符串。如何稍微调整我的正则表达式?括号用于匹配字母,而不是单词。此外,星型符号用于表示0次或更多次,它自然适用于空字符串 我的建议?找到简单的解决方案,让它工作。您可以使用两个不同的正则表达式/o

我尝试编写正则表达式,检查字符串中是否包含某些单词,即
one
two
将是这些关键字。它们可以出现在句子的任何地方

字符串不应该有任何数字,只有字母。如果它没有数字并且有
1
2
我应该返回true

以下是我的尝试:

^([one|two]*\D*[one|two]*)$

但它匹配空字符串或任何不带数字的字符串。如何稍微调整我的正则表达式?

括号用于匹配字母,而不是单词。此外,星型符号用于表示0次或更多次,它自然适用于空字符串

我的建议?找到简单的解决方案,让它工作。您可以使用两个不同的正则表达式
/one/
检查“one”是否在字符串中,
/two/
检查“two”是否在字符串中。把两者结合起来,你就很好了(现在不是那么难吧?)


也许您会认为使用两个正则表达式很慢,但如果您关心在如此简单的任务中的性能,那么您首先会使用String#indexOf。

括号用于匹配字母,而不是单词。此外,星型符号用于表示0次或更多次,它自然适用于空字符串

我的建议?找到简单的解决方案,让它工作。您可以使用两个不同的正则表达式
/one/
检查“one”是否在字符串中,
/two/
检查“two”是否在字符串中。把两者结合起来,你就很好了(现在不是那么难吧?)

也许您会认为使用两个正则表达式很慢,但如果您关心这样一个简单任务的性能,那么您首先会使用String#indexOf。

给您:

(?=^.*(one|two))\D+$
下面是Java代码:

    String input = "ajlfjalfd one jlafjldaj two jlkajfldja";

    final String REGEX_STR = "(?=^.*(one|two))\\D+$";
    Pattern regex = Pattern.compile(REGEX_STR);
    Matcher regexMatcher = regex.matcher(input);

    return regexMatcher.matches();
给你:

(?=^.*(one|two))\D+$
下面是Java代码:

    String input = "ajlfjalfd one jlafjldaj two jlkajfldja";

    final String REGEX_STR = "(?=^.*(one|two))\\D+$";
    Pattern regex = Pattern.compile(REGEX_STR);
    Matcher regexMatcher = regex.matcher(input);

    return regexMatcher.matches();

我对正则表达式不太了解

You can use contains() method for finding one and two.
e.g.  str.contains("one");


then you can use regex to find whether it contains digits or not.

我对正则表达式不太了解

You can use contains() method for finding one and two.
e.g.  str.contains("one");


then you can use regex to find whether it contains digits or not.

这样的事情应该行得通:

^\D*?(\bone\b|\btwo\b)\D*?$

这样的事情应该行得通:

^\D*?(\bone\b|\btwo\b)\D*?$
试试看:
*(一、二)。*

试试看:
*(一、二)。*


我发现这个网站对于regexp来说是一个很棒的工具:我个人更喜欢使用gskinner,但这不是我想要的。thanksI发现这个网站是一个很棒的regexp工具:我个人更喜欢使用gskinner,但这不是我想要的。谢谢如果传递给
匹配项
(应该传递给
匹配项
),那么最后的
$
是多余的。如果传递到
find
,则它将被破坏,因为它缺少首字母
^
。您能解释一下为什么应该传递给匹配项吗?我使用了Pattern和Matcher。您使用的是
Matcher\matches
还是
Matcher\find
?所以您使用的是
matches
。在这种情况下,
$
是多余的。你是对的。谢谢然而,我认为我们应该保留
$
,因为,例如,您可以将regex复制到其他工具以检查它是否匹配(我使用Notepad++进行快速测试)。然后保持
$
将很有用。如果传递给
匹配项,则最后的
$
是多余的(并且应该传递给
匹配项
)。如果传递到
find
,则它将被破坏,因为它缺少首字母
^
。您能解释一下为什么应该传递给匹配项吗?我使用了Pattern和Matcher。您使用的是
Matcher\matches
还是
Matcher\find
?所以您使用的是
matches
。在这种情况下,
$
是多余的。你是对的。谢谢然而,我认为我们应该保留
$
,因为,例如,您可以将regex复制到其他工具以检查它是否匹配(我使用Notepad++进行快速测试)。那么,保持
$
将非常有用。