获取一行中的完整字符串,不包括匹配的正则表达式

时间:2018-03-29 13:18:03

标签: regex tuckey-urlrewrite-filter

例如,如果值与"电子邮件模式"匹配,则从网址中删除也与其关联的密钥。

如果网址是

https://stackoverflow.com/?key1=test&key2=test@gmail.com&key3=something&key4=another@email.com

然后删除 key2=test@gmail.com和key4=another@email.com ,以便新网址

https://stackoverflow.com/?key1=test&key3=something

这里,键名不是固定的,它们可以是任何东西。并且键的位置也不固定。

因此,希望正则表达式获取不包含这些键值对的整个字符串。我试图生成正则表达式以匹配不需要的键值对,但可能得到与正则表达式不匹配的其余字符串。

我是用java程序做的。但是看一个正则表达式,以便我可以在xml中应用并避免使用java程序

这主要是在urlrewritefilter(tuckey)中使用,并希望删除与正则表达式匹配的某些查询字符串。

1 个答案:

答案 0 :(得分:0)

这是java中的一个简单解决方案(我看到你的问题被标记为java)。这基本上是匹配的模式吗?或者&然后是一个单词,然后是a =然后是一封电子邮件。您可以使用更好的电子邮件正则表达式替换该部分[。\ w] + @ [\ w] + \。\ w +。使用正则表达式查找电子邮件对于陌生人的电子邮件来说可能很棘手,但这是基本的想法。

public class HelloWorld{

 public static void main(String []args){
    String url="https://stackoverflow.com/?key1=test&key2=test@gmail.com&key3=something&key4=another@email.com";
    System.out.println(url.replaceAll("[?&]\\w+=[.\\w]+@[\\w]+\\.\\w+",""));
 }
}