你如何找到使用正则表达式,以任何字符开头和结尾的字符

时间:2012-02-28 01:05:11

标签: regex unix

  

AXyz122311Xyslasd22344ssaa Aklsssx @ sdddf#4 = sadsss kaaAASds

如何在UNIX中使用正则表达式获取以"slas"开头并以"11Xy"结尾的字符"d223"

2 个答案:

答案 0 :(得分:0)

lookahead and lookbehind assertions将会这样做。

你尝试过这样的事吗?

(?<=11Xy).+(?=d223)


更新

您可以使用grep -o仅在* nix环境中显示匹配的文本。

答案 1 :(得分:0)

还不晚,但是,downvoters需要包括* NIX grep有一些限制和环视/后视/等等,实际上并不适用于大多数版本。

http://www.regular-expressions.info/grep.html

由于grep和egrep都不支持任何特殊功能,例如延迟重复或环视,

最近才将它添加到最近发布的GNU grep(3.0?)中基本上使用perl兼容的正则表达式

https://www.gnu.org/software/grep/manual/grep.html#The-Backslash-Character-and-Special-Expressions

-P --perl-regexp将模式解释为Perl兼容的正则表达式(PCRE)。这是非常实验性的,特别是当与-z( - null-data)选项结合使用时,'grep -P'可能会警告未实现的功能。

升级我的grep并使用-P 时,它就像魅力一样

$cat test.txt | ggrep -oP '(?<=11Xy)(.*?)(?=d223)'
slas

$ggrep --version
ggrep (GNU grep) 3.1
Packaged by Homebrew
Copyright (C) 2017 Free Software Foundation, Inc.
...