我有一个像这样的字符串
-------- AGG x y PORT-16385-INFO ----------------------------+
我想提取“AGG x y PORT-16385-INFO”。然而,这种模式并不相同。之间可以有任意数量的空格。
帮我用正则表达式来获取字符串。
我正在使用这个正则表达式
regexp {\s+(.*)\-\-*} $a - am
输出
AGG PORT-16385-INFO ---------------------------
这不是我想要的。帮我用正则表达式。
最佳答案
好吧,我假设您的定界符至少有两个 -
长,并且通过一个空格与内容分隔开来。然后是一个普通的正则表达式,比如
--\s+(.*?)\s+--
已经可以工作了。 *?
量词进行非贪婪匹配,以尽早终止。
此正则表达式是否有效在很大程度上取决于允许的值和您输入的确切格式,您没有充分解释。
我也很惊讶你将它标记为 Perl — 我很确定你的代码不是有效的 Perl 代码。
如果您不想使用 .
字符类,那么我们可以重写它以匹配所有非连字符或单个连字符后跟一个非连字符:
--\s+((?:[^-]+|-[^-])*)\s+--
您可能还想禁止连字符沿线换行。
关于regex - 用正则表达式匹配一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18440876/