我对 perl 风格的正则表达式非常陌生。有人可以建议我在管道句子中获得第n 个单词吗?
句子:
ab|gf|fdg|hjtyt|ew|gf|jh|edf|gfd|fd|fd|jvf|df|ds|s|gf
我想在这里第四个字:hjtyt
我正在使用一个工具,我只能放置 perl 样式的正则表达式,所以我只寻找一个正则表达式解决方案。
我不会为此使用正则表达式。在 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
在 perl 中使用自动拆分:
> echo "ab|gf|fdg|hjtyt|ew|gf|jh" | perl -F"\|" -lane 'print $F[3]'
hjtyt
>