【问题标题】:Regular Expressions ungreedy in bash [duplicate]bash中不贪婪的正则表达式[重复]
【发布时间】:2016-04-27 16:01:17
【问题描述】:

选择以下哪个字符串匹配正则表达式

(1 U 22)*2*

a. 22112222112211
b. 11112
c. The empty string.
d. 12121
e. 1121111222

我做了一些搜索,U 的意思是“不贪婪。使量词 *+?{} 只使用那些绝对必要的字符来形成匹配,剩下的可用于模式的下一部分。当“U " 选项无效,单个量词后跟一个问号可以使其不贪心。相反,当 "U" 有效时,问号使单个量词贪心。" https://www.cheatography.com/davechild/cheat-sheets/regular-expressions/

但是我完全不明白,贪婪的正则表达式和不贪婪的正则表达式是什么意思?你能展示我上面列出的例子吗?

【问题讨论】:

  • 使用regex101.com 可视化调试器模式下发生的事情
  • 贪婪匹配最长的匹配字符串。 Ungreedy 匹配最短。
  • @rock321987 不,这不是重复的问题,我只想知道如何在这里使用带有正则表达式的选项U 并了解什么是不贪婪
  • @123 你能提供一些简单的例子来证明这一点吗?对不起,我对 linux 很陌生....
  • AutoHotkey 和 bash 有什么关系?

标签: regex linux bash expression


【解决方案1】:

贪婪意味着它将尝试找到最长的匹配字符串。

对于以下字符串:

{ this} is a { test} } 

贪心正则表达式示例

\{.*\}

此正则表达式将匹配以下整个文本:

{ this} 是一个 {test} }

非贪婪

\{.*\}

只匹配 { this}

【讨论】:

  • ?在哪里:\{.*?\}
猜你喜欢
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多