在python,但語法應該是一樣的,
#!/usr/bin/python
import re
ptn = re.compile(r"""
{link=
(?:
(?:([^|}]+)\|)?
(?:([^|}]+)\|)
)?
([^|}]+)
}
""", re.VERBOSE)
l = [
"{link=a}",
"{link=a|b}",
"{link=a|b|c}",
"{link=a} {link=a|b} {link=a|b|c}",
]
for s in l:
for m in ptn.finditer(s):
print "%s => matchs: %s => m.group(3): %s" % (
s, m.group(0), m.group(3))
和結果:
{link=a} => matchs: {link=a} => m.group(3): a
{link=a|b} => matchs: {link=a|b} => m.group(3): b
{link=a|b|c} => matchs: {link=a|b|c} => m.group(3): c
{link=a} {link=a|b} {link=a|b|c} => matchs: {link=a} => m.group(3): a
{link=a} {link=a|b} {link=a|b|c} => matchs: {link=a|b} => m.group(3): b
{link=a} {link=a|b} {link=a|b|c} => matchs: {link=a|b|c} => m.group(3): c
尼斯。但爲什麼你用{0,1}而不是好的'?'? – PhiLho 2010-01-21 07:11:34
沒有很好的理由。我可能只是忘記了;) – 2010-01-21 07:14:54
我冒昧地修復(化妝品),但更重要的是排除管道從第一次捕獲。 – PhiLho 2010-01-21 07:21:12