簡體   English   中英

python正則表達式可以匹配2個字符之間不包含單詞的任何東西

[英]python regular expression to match anything not containing some word, in between 2 characters

在Fortran中,數據語句以單詞“ data”開頭,后跟數組的名稱,然后是數組的值,該值夾在兩個正斜杠“ /”之間。

pattern_data = r'''
( data [^/]+ / [^/]+ / )
'''

c = "data plevel = /4.56, 234., 1e-45/ data tlayer / -5.6, +290.098/"

在上面, c就像一個示例Fortran代碼,其中包含2個我要提取的數據語句。 pattern_data是正則表達式,它匹配以“ data”開頭,后跟“ /”以外的任何字符,后跟“ /”,后跟“ /”以外的任何其他字符和后跟“ /”的任何子字符串。

這似乎起作用,給出:

regex = re.compile(pattern_data, re.VERBOSE)

regex.findall(c)
['data plevel = /4.56, 234., 1e-45/', 'data tlayer / -5.6, +290.098/']

但是,如果我想說的話:“ data”,后跟除“ /”之外的其他任何內容,后跟“ /”,然后除“ data”以外的其他任何內容,后跟“ /”。 我認為這也將與數據語句匹配,但是“除“數據”以外的任何東西”的正則表達式是什么?

我曾嘗試使用像這樣的否定性后向:

data [^/]+ / (?<! data).* /

但這匹配整個字符串c

您的嘗試將禁止將data放在第一個斜杠之前,而這不是您想要的。 這將測試data是否在斜線之間:

( data [^/]+ /  (?! [^/]* data )  [^/]+ / )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM