2012-09-01 59 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

相关问题