perl style regex - 获取管道句子中的第n个(第4个)字 - a | b | c | d | e | f | g | h | i | j | k | n | o

时间:2013-04-12 05:42:13

标签: regex styles pcre

我是perl风格的新手正则表达式。有人可以建议我在管道句中得到第n个字

句子:

ab|gf|fdg|hjtyt|ew|gf|jh|edf|gfd|fd|fd|jvf|df|ds|s|gf

我想来这里第四个字hjtyt

我使用的工具只能放入perl样式的正则表达式,所以我只想找一个正则表达式解决方案。

2 个答案:

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