我正在尝试编写一个正则表达式,它将捕获两个或更多
One OS to rule them all,
One OS to find them.
One OS to call them all,
And in salvation bind them.
In the bright land of Linux,
Where the hackers play.
我希望它成为
One OS to rule them all,
One OS to find them.
One OS to call them all,
And in salvation bind them.
In the bright land of Linux,
Where the hackers play.
通过使用此正则表达式([ ]* ){2,}
,我可以捕获两个或更多空格。这个问题是它还捕获了第2 - 5行的前导空格。
注意: 我想在 Intellij IDEA 中使用此正则表达式。
答案 0 :(得分:2)
在您的示例中,您可以使用单词边界元字符:
\b\s{2,}
这将匹配单词末尾(或开头,但单词不能以空格开头)后任意数量的大于2的空格。
但是,在更常见的情况下,如果你可以在一个特殊字符后面有多个空格,这将不会被视为一个单词的一部分。
如果您的语言支持无界宽度后瞻,您可以匹配以下内容:
(?<!^\s*)\s{2,}
答案 1 :(得分:2)
你可以使用这样的正则表达式:
\b\s+\b
使用空格_
替换
<强> Working demo 强>
IntelliJ的更新:似乎看起来没有使用IntelliJ,因此您可以尝试使用其他解决方法:
(\w+ )\s+
使用替换字符串:$1
<强> Working demo 强>
当然,上面的正则表达式会缩小场景,但你可以试试。
答案 2 :(得分:2)
支持(*SKIP)(*FAIL)
,你也可以提出:
^[ ]+(*SKIP)(*FAIL) # match spaces at the beginning of a line
# these shall fail
| # OR
[ ]{2,} # at least two spaces
请参阅a demo on regex101.com(请注意修饰符!)。