我是perl风格的新手正则表达式。有人可以建议我在管道句中得到第n个字。
句子:
ab|gf|fdg|hjtyt|ew|gf|jh|edf|gfd|fd|fd|jvf|df|ds|s|gf
我想来这里第四个字:hjtyt
我使用的工具只能放入perl样式的正则表达式,所以我只想找一个正则表达式解决方案。
答案 0 :(得分:3)
我不会使用正则表达式。在Python中:
>>> s = "ab|gf|fdg|hjtyt|ew|gf|jh|edf|gfd|fd|fd|jvf|df|ds|s|gf"
>>> s.split("|")[3]
'hjtyt'
但如果你坚持:
>>> import re
>>> re.search(r"^(?:[^|]*\|){3}([^|]*)", s).group(1)
'hjtyt'
<强>解释强>
^ # Start of string
(?: # Match...
[^|]* # Any number of characters except pipes,
\| # followed by a pipe,
){3} # repeated three times.
( # Match and capture into group number 1:
[^|]* # Any number of characters except pipes.
) # End of capturing group number 1
答案 1 :(得分:1)
在perl中使用autosplit:
> echo "ab|gf|fdg|hjtyt|ew|gf|jh" | perl -F"\|" -lane 'print $F[3]'
hjtyt
>