我有一个输入字符串,我想使用正则表达式来检查该字符串是否具有 =
和 $
,例如:
输入:
name=alice$name=peter$name=angelina
输出:true
输入:
name=alicename=peter$name=angelina
输出:假
我的正则表达式不起作用:
Pattern pattern = Pattern.compile("([a-z]*=[0-9]*$])*");
Matcher matcher = pattern.matcher("name=rob$name=bob");
最佳答案
通过.matches()
,您可以使用
Pattern pattern = Pattern.compile("\\p{Lower}+=\\p{Lower}+(?:\\$\\p{Lower}+=\\p{Lower}+)*"); // With `matches()` to ensure whole string match
详细信息
\p{Lower}+
- 1 个以上小写字母(使用\p{L}
来匹配任何和\p{Alpha}
仅匹配 ASCII 字母)=
- 一个=
字符\p{Lower}+
- 1 个以上小写字母(?:\\$\\p{Lower}+=\\p{Lower}+)*
- 出现 0 次或多次:\$
- 一个$
字符\p{Lower}+=\p{Lower}+
- 1+ 个小写字母、=
和 1+ 个小写字母。
请参阅Java demo :
List<String> strs = Arrays.asList("name=alice$name=peter$name=angelina", "name=alicename=peter$name=angelina");
Pattern pattern = Pattern.compile("\\p{Lower}+=\\p{Lower}+(?:\\$\\p{Lower}+=\\p{Lower}+)*");
for (String str : strs)
System.out.println("\"" + str + "\" => " + pattern.matcher(str).matches());
输出:
"name=alice$name=peter$name=angelina" => true
"name=alicename=peter$name=angelina" => false
关于java - Java中通过正则表达式查找字符串中重复的字符序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61192061/