2012-09-01 93 views
0

所以我有這樣一個字符串(#標籤是分隔符)使用正則表達式來分割字符串

A1###B2###C3###12345.jpg 

我不知道我怎麼會進入A1,B2和C3

STRING1###STRING2###STRING3###STRING4.jpg 
SOME###THING###HERE###MEH.jpg 
EXTRACT###THIS###PLEASE###pah.jpg 

在一個實例我想提取第一個字符串。在另一個第二,在另一個第三。我將利用這個使用Adobe Bridge來提取文件名

我通過每名循環元數據項所以需要

Var1 = FirstString 
Var2 = SecondString 
Var3 = ThirdString 
+2

什麼?真?他們可以是「B2」還是「C3」?他們固定長度?你在用什麼語言? – Oded

+1

誰在回答問題?他們以書面形式回答這個問題。 – OrangeDog

+0

https://i.chzbgr.com/completestore/12/8/21/uEYRq9DvQUOanGpesRk_eQ2.png – OrangeDog

回答

2
[^#]+(?=###) 

將匹配你的字符串的所有子字符串後跟###

>>> s = "STRING1###STRING2###STRING3###STRING4.jpg" 
>>> import re 
>>> re.findall("[^#]+(?=###)", s) 
['STRING1', 'STRING2', 'STRING3'] 

或者,在您的評論的例子:

>>> s = "Slayer###Reading Festival###James###123.jpg" 
>>> artist, event, photographer = re.findall("[^#]+(?=###)", s) 
>>> artist 
'Slayer' 
>>> event 
'Reading Festival' 
>>> photographer 
'James' 

假設Adobe Bridge中有一個ECMAScript-你可以使用不同的正則表達式:

var myregexp = /^([^#]+)###([^#]+)###([^#]+)###/; 
var match = myregexp.exec(subject); 
if (match != null) { 
    artist = match[1]; 
    event = match[2]; 
    photographer = match[3]; 
} 
+0

假設我有Slayer ###朗誦節###詹姆斯### 123.jpg。我將如何將Slayer分配給變量藝術家,閱讀節日以及詹姆斯攝影師? – pee2pee

+0

@JanuszJasinski:看我的編輯。 (使用的語言是Python;您沒有指定您將使用哪種語言,所以我選擇了我最瞭解的語言。) –

+1

我在Adobe Bridge JavaScript(JSX)中使用它 – pee2pee

-1

這將是你的正則表達式:

(A1).*(B2).*(C3).*\.jpg 

這將捕獲你想要的三個部分,而忽略其餘的字符串。

要訪問部件,您只需分別使用\ 1,\ 2 \,\ 3。

+0

我應該更清楚 STRING1 ### STRING2 ### STRING3 ### STRING4.jpg 在一個實例中,我想提取第一個字符串。在另一個第二,在另一個第三。我將用這個與Adobe Bridge從文件名中提取元數據項目 – pee2pee

+0

不,這是錯誤的。你只能在相同的模式中使用諸如'\ 1','\ 2'和'\ 3'之類的東西,而不是在它之外,並且即使只在某些模式匹配語言中使用。 – tchrist

相關問題