regex - 正则表达式字符串前后没有或一个或多个空格
问题描述
如何为以下字符串编写正则表达式,前后没有空格或多空格。
"any"
"any4"
"any6"
" any "
" any4 "
" any6 "
" any "
" any4 "
" any6 "
我试过"any[4,6]{0,1}$"
了,但这仅适用于前三个字符串。
解决方案
要完全匹配此类字符串(省略^
and$
进行子字符串匹配):
$strings = (
"any",
"any4",
"any6",
" any ",
" any4 ",
" any6 ",
" any ",
" any4 ",
" any6 "
)
$strings -match '^ *any[46]? *$' # matches all of the above
要匹配其他形式的空白,\s
请使用
.
要提取带有空格修剪的标记:
$strings -replace '^ *(any[46]?) *$', '$1' # -> 'any', 'any4', ..., 'any4', 'any6'
(...)
形成一个捕获组,它$1
在替换字符串中引用。有关更多信息,请参阅我的这个答案。
至于你尝试了什么:
[4,6]
是一个字符集,这意味着单个输入字符与这些字符中的任何一个匹配,包括,
,这不是您的意图。您对重复符号(量词)的使用
{0,1}
是正确的(前面表达式的 0 或 1 个实例),但?
它是同一构造的更简单形式(就像*
比 更简单{0,}
)。通过将
$
(输入结束断言)直接放在 之后{0,1}
,您不允许可选的尾随空格。
推荐阅读
- html - Bootstrap 响应式查询无法按照我想要的方式工作
- python - 使用带有标题的 np.savetxt 保存结构化的 numpy 数组
- git-merge - Git替换整个目录
- python - 计算一列在 Pandas 中包含某个值的次数
- javascript - React Native - componentWillReceiveProps 到 AsyncStorage
- ruby-on-rails - rails,locals 不传递给 bootstrap modal 部分
- scala - 如何在 Cassandra 中添加 Scala 列表或集合?
- tcl - tcl 期望正则表达式不起作用?
- javascript - JS加载损坏的JSON文件
- javascript - Javascript添加动画