regex - 用正则表达式匹配一个字符串

标签 regex perl tcl

我有一个像这样的字符串

-------- 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+--

Regular expression visualization

您可能还想禁止连字符沿线换行。

关于regex - 用正则表达式匹配一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18440876/

相关文章:

shell - 将文件读入 String 并在 Expect Script 中执行循环

ruby - 在 Vim 中禁用特定的 Ruby 正则表达式模式匹配以提高性能

regex - 跨多行的复杂匹配

c++ - 在 Linux 上监视目录的程序

javascript - 最可行的 WebSocket/Perl 解决方案

unit-testing - 你如何在 TCl 中测试私有(private)方法

Java正则表达式从字符串中提取测量值

c# - 需要 C# Regex 来替换字符串中的空格

python - 将带空格的参数传递给 linux 服务

Tcl:检查两个文件之间的相同内容