2017-10-14 338 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