0

我有一个很长的文本,我需要在其他两个词之间隔离一个词。

这是我所拥有的文字的一部分:

2012-05-05 19:31:44 status config-files gwibber-service 3.4.0-0ubuntu4
2012-05-05 19:31:44 status not-installed gwibber-service <none>
2012-05-05 19:31:45 status installed gir1.2-notify-0.7 0.7.5-1
2012-05-05 19:31:45 remove gir1.2-notify-0.7 0.7.5-1 <none>
2012-05-05 19:31:45 status half-configured gir1.2-notify-0.7 0.7.5-1
2012-05-05 19:31:45 status half-installed gir1.2-notify-0.7 0.7.5-1

现在我想选择所有单词和数字 excpet,例如:

gir1.2-notify-0.7

所以我用“”替换它们(实际上删除了所有其他单词和数字)。我想,有两个关键字可以用来隔离它们:“remove”和“{some numbers and .} <none>”一切必须排除它们之间...

我希望你明白了。感谢帮助。

4

3 回答 3

1

尝试这个:

(?<=remove)\s+([\w\.\-]+)\b

这不过是一种简单的positive look-behind方法。为了更好地理解,请访问这里

于 2012-05-06T13:21:16.600 回答
0
r"\w[\w-]*[\.]{1}\w[\w-\.]*"  /// -> it will match all strings of the form -> 

[一个字母数字字符][(零个或多个字母数字字符或-"-")].[一个字母数字字符][(零个或多个字母数字字符或-"- ")]

所以它会匹配girl1.2-notify-0.7,但不会匹配gwibber-service。

于 2012-05-06T12:12:15.337 回答
0

我不确定我是否真的理解你的问题,但是......

使用以下正则表达式:remove(.*)<none>$ $1会给你“ gir1.2-notify-0.7 ”

我认为您无法在单个语句中选择/替换除 $1 之外的所有内容,您可能必须根据正则表达式返回的结果滚动一些代码来处理。

于 2012-05-06T12:33:35.093 回答