2017-10-14 174 views
-1

的特定部分,我有以下一句:正则表达式 - 获取字符串

b.g位的大包被窃听。

如何使用正则表达式排除b.g

我确定我需要一个负面的lookahead,但我还没弄清楚。 喜欢的东西

^(?!b\.g) 
+2

现在还不清楚你想匹配什么,请m矿石具体。 – Maroun

+0

此外,还有不止一个正则表达式语法,引擎等等。我们需要知道哪一个你需要一个答案,以及你*想要匹配什么(不包含'bg'的最大连接字符串串?) –

+1

正则表达式将帮助您匹配该字符串,但您需要使用特定的函数/方法或工具来应用所需的替换,因为您可以在此查看:https://regexr.com/3gvbq – fagiani

回答

0

我会做它这样:

[^\S].* 

[^\S]所做的基本上是跳过任何角色,直到达到第一个空格。然后开始捕捉。在这种情况下,不需要负面或正确的Lookbehind。

演示:regex101

如果你喜欢用积极的回顾后做,你能做到这样

(?<=b\.g).* 

演示:regex101

0

sed 's/^...//'条第3个字,“b.g”,但我怀疑这就是你真的问。你的^锚似乎是一个红色的鲱鱼。

您已经有了正确的转义.时期,只是坚持认为:

sed 's/b\.g//' 

Python的positive lookbehind?<=可能是你正在努力寻找的话来表达:

>>> m = re.search(r'(?<=b\.g)(.*)', 'b.g The big bag of bits was bugged.') 
>>> print(m.group(1)) 
The big bag of bits was bugged. 
+0

我是不清楚OP是否试图找到一个操作来移除该字符串(这不是标准化正则表达式语法提供的东西,因此需要使用'sed'提供的其他命令),而不是一种匹配所有东西的方法在他们的输入*除*这个词。 –

0

在Python中,你可以做这样的事情:

import re 
w = 'b.g The big bag of bits was bugged.' 
print w 

d = re.compile(r'^b.g\s') 
a = re.sub(d, '', w) 
print a 
相关问题