我有这种格式的不同数据:
ISIN:LU0799639926
我创建了一个正则表达式来过滤重要数据:
\w{2}\d{10}
问题是我想要删除模式前后的所有内容。 我已经尝试了
[^\w{2}\d{10}]*
它选择除了我的模式之外的所有东西,它只是不起作用。有没有人有解决方案?
答案 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)
[^\w{2}\d{10}]
{
和}
被视为文字{
和}
,它们会失去正则表达式的含义。
尝试:
.*(\w{2}\d{10})
这将捕捉到您想要的模式,然后您可以轻松地将其替换为您想要的任何模式。