我对正则表达式不是很熟悉,所以我在这里问。
我有这样一个字符串:
BEGIN:VCARD
VERSION:3.0
FN:A Sirius Swimwear Collection
N:Collection;A;Sirius Swimwear;;
TEL;TYPE=HOME:22448
TEL;TYPE=CELL:52316
ADR:;Taylors Road;;;;;
ORG:Norfolk Phone Book
END:VCARD
BEGIN:VCARD
VERSION:3.0
FN:A Walk in the Wild
N:Wild;A;Walk in the;;
TEL;TYPE=HOME:22502
item1.TEL:23205
item1.X-ABLabel:Facsimile
ADR:;Grassy Road;;;;;
ORG:Norfolk Phone Book
END:VCARD
BEGIN:VCARD
VERSION:3.0
FN:AATA Orn Tours
N:Tours;AATA;Orn;;
TEL;TYPE=HOME:23611
TEL;TYPE=CELL:50755
ADR:;Bookings;;;;;
ORG:Norfolk Phone Book
END:VCARD
BEGIN:VCARD
VERSION:3.0
FN:Aatuti Art
N:Art;Aatuti;;;
TEL;TYPE=HOME:23669
ADR:;The Village;;;;;
ORG:Norfolk Phone Book
END:VCARD
BEGIN:VCARD
VERSION:3.0
FN:ABC Hobby Centre
N:Centre;ABC;Hobby;;
TEL;TYPE=HOME:22139
ADR:;Taylors Road;;;;;
ORG:Norfolk Phone Book
END:VCARD
(...)
对于那些熟悉的人来说,这是一堆 VCard,我想从 String 中一张一张地得到一张 VCard。所以,我想把它分成多个字符串。我想用 BEGIN:VCARD
Và END:VCARD
标签拆分
结束:
vcard1 = "BEGIN:VCARD
VERSION:3.0
FN:A Sirius Swimwear Collection
N:Collection;A;Sirius Swimwear;;
TEL;TYPE=HOME:22448
TEL;TYPE=CELL:52316
ADR:;Taylors Road;;;;;
ORG:Norfolk Phone Book
END:VCARD";
vcard2 = "BEGIN:VCARD
VERSION:3.0
FN:A Walk in the Wild
N:Wild;A;Walk in the;;
TEL;TYPE=HOME:22502
item1.TEL:23205
item1.X-ABLabel:Facsimile
ADR:;Grassy Road;;;;;
ORG:Norfolk Phone Book
END:VCARD";
vcard3 = "BEGIN:VCARD
VERSION:3.0
FN:AATA Orn Tours
N:Tours;AATA;Orn;;
TEL;TYPE=HOME:23611
TEL;TYPE=CELL:50755
ADR:;Bookings;;;;;
ORG:Norfolk Phone Book
END:VCARD";
老实说,我只需要正确的正则表达式模式作为我能够完成的循环。这是在 JAVA 中(适用于 Android)。
biên tập
这是我到目前为止没有成功的尝试:
if(vcard.contains("VERSION:"))
{
Log.d(TAG, "Creating the patterns");
Pattern p = Pattern.compile("BEGIN:VCARD(.*)END:VCARD");
Matcher m = p.matcher(vcard);
if (m.find())
{
Log.d(TAG, "Find: " + m.group(1));
}
Log.d(TAG, "Not found anything");
您可以将 Pattern.DOTALL
与您的正则表达式一起使用。这意味着 在 dotall 模式下,表达式点 (.) 匹配任何字符,包括行终止符
,它将帮助您从多行匹配模式。
String input = "__YOUR__VCARDS__";
Pattern pattern = Pattern.compile("(BEGIN:VCARD.*?END:VCARD)", Pattern.DOTALL);
Matcher m = pattern.matcher(input);
while (m.find()) {
System.out.println(m.group(1));
}
Tôi là một lập trình viên xuất sắc, rất giỏi!