在正则表达式模式之前删除所有内容

时间:2015-07-09 08:11:28

标签: regex

我有这种格式的不同数据:

ISIN:LU0799639926

我创建了一个正则表达式来过滤重要数据:

\w{2}\d{10}

问题是我想要删除模式前后的所有内容。 我已经尝试了

[^\w{2}\d{10}]* 

它选择除了我的模式之外的所有东西,它只是不起作用。有没有人有解决方案?

2 个答案:

答案 0 :(得分:2)

您可以使用.*子模式获取之前和之后的任何内容,将子字符串捕获到捕获组中,然后替换为$1反向引用:

.*(\w{2}\d{10}).*

替换为$1

请参阅demo

或许,使用.*([A-Z]{2}\d{10}).*会更安全,因为\w也可以捕获数字,而[A-Z]只会匹配大写字母。

如果你在输入字符串中有多个值,那么你可能更感兴趣的是获得一个分隔的字符串,例如:

.*?([A-Z]{2}\d{10})

替换为$1;

请参阅another demo

答案 1 :(得分:0)

character class

[^\w{2}\d{10}]

{}被视为文字{},它们会失去正则表达式的含义。

尝试:

.*(\w{2}\d{10})

这将捕捉到您想要的模式,然后您可以轻松地将其替换为您想要的任何模式。