正则表达式:匹配字母数字和空格,但前导空格除外

Posted

技术标签:

【中文标题】正则表达式:匹配字母数字和空格,但前导空格除外【英文标题】:Regex: Match alphanumeric and spaces with exception of leading spaces 【发布时间】:2019-10-14 13:13:17 【问题描述】:

我的目标是捕获字母数字字符和所有空格(减去前导空格)。 我遇到的问题是无法捕获非字母数字字符(符号)后面的空格。 如有必要,我愿意使用环视,但即使这样做也尚未解决此问题。

这是我已经完成的,如上所述:


文字: # one 123: two `three` four (five) six

想要的结果: one 123 two three four five six


*正则表达式尝试:

环顾四周:

(?! )[A-Za-z0-9 ]*(?<! )

结果: one 123twothreefourfivesix

没有环顾四周:

[A-Za-z0-9]+(?: +[A-Za-z0-9]+)*

结果:one 123twothreefourfive

【问题讨论】:

为什么这个标签是 C and bash?你用的是什么正则表达式库? 你想匹配那个字符串的哪一部分? “abc 123”? 能否请您发布一些示例以及预期的输出 我已经修复了标签,澄清了示例,并提供了我的示例结果 @Shawn 现在,我相信它是 POSIX 正则表达式库(在 grep 命令中使用它)......不过,我愿意使用 javascript 变体......我已经更新了我的问题的期望结果和澄清的例子。 【参考方案1】:

你可以使用这个正则表达式

^[^a-z0-9]+|[^a-z0-9 ]+|\s2,|[^a-z0-9]+$
^[^a-z0-9]+ - 匹配字符串开头的字母数字以外的任何内容 [^a-z0-9 ]+ - 匹配除字母数字和空格以外的任何内容 \s2, - 匹配两个或多个连续的空格字符 [^a-z0-9 ]+$ - 匹配字符串末尾的字母数字以外的任何内容

Demo

【讨论】:

以上是关于正则表达式:匹配字母数字和空格,但前导空格除外的主要内容,如果未能解决你的问题,请参考以下文章

求JS中如何匹配字母、数字和空格的正则表达式

正则表达式匹配字母数字和空格

正则表达式匹配指定数据和字母

正则表达式:匹配模式后跟一个空格但不匹配2个或更多空格或EOF

正则表达式匹配标签内容,同时省略前导和尾随空格

正则表达式及Linux三大文本处理工具