使用正则表达式拆分字符串

时间:2012-09-01 15:20:48

标签: regex jsx adobe-bridge

所以我有一个这样的字符串(主题标签是分隔符)

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 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:-1)

这将是你的正则表达式:

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

这将捕获您想要的三个部分,同时忽略字符串的其余部分。

要访问这些部分,只需分别使用\ 1,\ 2 \,\。