在正则表达式中排除字符串

时间:2012-05-06 11:52:21

标签: regex string search

我有一个很长的文字,我需要在另外两个单词之间隔离单词。

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

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

所以我用“”替换它们(实际删除所有其他单词和数字).. 我的想法是,我可以使用两个关键词来隔离它们:“删除”和“{some numbers and。}&lt; none&gt;” 他们之间的一切都必须排除......

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

3 个答案:

答案 0 :(得分:1)

试试这个:

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

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

答案 1 :(得分:0)

r"\w[\w-]*[\.]{1}\w[\w-\.]*"  /// -> it will match all strings of the form -> 

[一个字母数字字符] [(零或更多的字母数字-chararcters-或 - “ - ”)。[一个字母数字字符] [(零或更多的字母数字-chararcters-或 - “ - ”)]

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

答案 2 :(得分:0)

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

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

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