java - Java中通过正则表达式查找字符串中重复的字符序列

标签 java regex

我有一个输入字符串,我想使用正则表达式来检查该字符串是否具有 =$,例如:

输入:

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/

相关文章:

java - Spring REST - 手动解析@RequestBody中的JSON属性

java - 将大图像保存为 PNG

php - 在 php 中使用正则表达式时出现奇怪的事情

mysql - 如何在mysql中正则表达式字符串+数字模式

c# - 在 C# 中操作 RegEx 匹配以进行计算

javascript - 无法使正则表达式删除第一个空格字符

java - Android 声明一个变量

java - DocumentBuilder.parse(InputStream) 返回 null

java - JAX-RS 是建立在 Servlet API 之上的吗?如何?

php - 我将如何使用正则表达式来使用 PHP 搜索数据库?