gpt4 book ai didi

java - 重复单词的正则表达式模式

转载 作者:行者123 更新时间:2023-12-01 06:07:07 25 4
gpt4 key购买 nike

我对正则表达式很陌生,我现在正在学习。我有这样的需求:

任何字符串都以#newline# 开头,也以#newline# 结尾。在这两个词之间,可以有(0 个或多个空格)或(0 个或多个#newline#)。

下面是一个例子:

#newline#  #newline# #newline##newline# #newline##newline##newline#.

如何为此做正则表达式?

我试过了,但是不行

^#newline#|(\s+#newline#)|#newline#|#newline#$

最佳答案

您的 ^#newline#|(\s+#newline#)|#newline#|#newline#$ 匹配开头的 #newline#字符串 (^#newline#),或 1+ 个空格后跟 #newline# ((\s+#newline#)),或 #newline#,或者(这永远不会匹配,因为前面捕获了 #newline# 的所有情况)结尾处的 #newline#字符串 (#newline#$)。

您可以将这些字符串与

匹配
^#newline#(?:\s*#newline#)*$

或(如果字符串中至少出现 2 次 #newline#)

^#newline#(?:\s*#newline#)+$
^

参见 regex demo .

  • ^ - 字符串的开始
  • #newline# - 文字字符串
  • (?:\s*#newline#)* - 零(注意:将 * 替换为 + 将需要至少 1) 或更多序列
    • \s* - 0+ 个空格
    • #newline# - 文字子串
  • $ - 字符串结尾。

Java demo :

String s = "#newline#  #newline# #newline##newline# #newline##newline##newline#";
System.out.println(s.matches("#newline#(?:\\s*#newline#)+"));
// => true

注意:在matches()中,表达式已经被锚定,^$可以移除。

关于java - 重复单词的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38698936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com