我正在尝试将Java / Android中的模式与正则表达式匹配。模式在字符串的末尾是“辅音”-“元音”-“ s”,就像在“相似”和“científicas”中一样,但在“过程”中则不同。
我的代码:
Pattern pat = Pattern.compile("[^aeiou][aeiou]s\\b");
Matcher matcher = pat.matcher(word);
Log.e(TAG, word + " contains pattern? " + matcher.matches() );
该测试人员说我是正确的:
这个特定于Java的代码也告诉我我也是正确的:
https://www.freeformatter.com/java-regex-tester.html#ad-output
但是在我的Android应用中,我无法使它们匹配。
我的输出:
activ contains pattern? false
program contains pattern? false
informá contains pattern? false
consult contains pattern? false
process contains pattern? false
dados contains pattern? false
domicili contains pattern? false
inform contains pattern? false
relacion contains pattern? false
outr contains pattern? false
consultoria contains pattern? false
científicas contains pattern? false
técn contains pattern? false
similares contains pattern? false
我也测试过
"[^aeiou][aeiou]s$"
和
"[^aeiou][aeiou][s]\\b"
我想念什么?
答案 0 :(得分:0)
这是用于匹配“辅音”-“元音”-“ s”的正则表达式:
^[^AEIOUaeiou]*[AEIOUaeiou]+[s]$
或者,对于“一切”-“元音”-“ s”:
^[A-Za-z]*[AEIOUaeiou]+[s]$
*
:0次或多次出现
+
:1次或多次发生
答案 1 :(得分:0)
matches
尝试匹配整个String
。如果您将字符串拆分成单词并进行了清理,则可以添加.*
来匹配任意字符多次
.
-匹配任意字符
*
-量词:0次或更多次
^
-字符串开始
$
-字符串结尾
^\\b.*[^aeiou][aeiou]s\\b$
但是,需要注意的一点是,如果不清理字符串,它也会与非单词字符匹配。
“整个句子中的所有句子都匹配”,“ _./!# pes”,“ \ n \ rwas”也都匹配。
您也可以将.*
替换为:
\\w*
-任意数量的文字字符[A-Za-z0-9_]
\\b\\w*
-单词边界,后跟任意数量的单词字符