Sud*_*Vln 1 shell-script regular-expression expr
我正在从字符串的开头和结尾提取子字符串。我尝试了和没有“.*”
$expr "ab1cd1efgfedcbaAAAA" : ".*\(1[a-l]*\)" # Result: 1efgfedcba
$expr "ab1cd1efgfedcbaAAAA" : "\(1[a-l]*\)" # No Result (1cd was expected)
$expr "ab1cd1efgfedcbaAAAA" : "\(ab1[a-l]*\)" # Result: ab1cd
Run Code Online (Sandbox Code Playgroud)
为什么“expr”没有给出第二个子字符串搜索的结果。
可以看出,在第三次搜索中,'ab' 已被添加到子字符串的前缀。这是第二次和第三次搜索之间的唯一区别。也许我在这里遗漏了一些东西。
'expr' 是如何进行搜索的?
小智 8
man expr
说“STRING : PATTERN”表达式是“锚定的”,然后在信息页面 ( info coreutils 'expr invocation'
) 中,您可以阅读:
`STRING : REGEX'
Perform pattern matching. The arguments are converted to strings
and the second is considered to be a (basic, a la GNU `grep')
regular expression, with a `^' implicitly prepended. The first
argument is then matched against this regular expression.
Run Code Online (Sandbox Code Playgroud)
这意味着您看到的效果是预期的行为。