java正则验正斜杠_java - 正则表达式以正斜杠分割 - 堆栈内存溢出

我实现了您在本文后所要求的内容:

总结一下,这是一个全面的策略:

1,您需要以这种格式创建一个正则表达式:

NotThis | NeitherThis | (IWantThis)

之后,您的捕获组$ 1将仅包含您感兴趣执行拆分的斜杠。

然后,您可以用不太可能发生的事情替换它们,然后在此替换的术语中执行拆分。

所以,考虑到这个策略,这里是代码:

正则表达式:

\\/(?=\\/)|(?:http:\\/\\/)?www[\\w\\.\\/\\-]*(?=\\/)|(\\/)

说明:

不是这个术语是lookAhead的双斜线(只采用第一斜杠)

\\/(?=\\/)

这个术语都不是一个基本的网址检查,前瞻不能捕获最后一个\\ /

(?:http:\\/\\/)?www[\\w\\.\\/\\-]*(?=\\/)

IWant这个词只是斜线:

(\\/)

在Java代码中,您可以将所有内容放在一起,执行以下操作:

Pattern p = Pattern.compile("\\/(?=\\/)|(?:http:\\/\\/)?www[\\w\\.\\/\\-]*(?=\\/)|(\\/)");

Matcher m = p.matcher("(TOP~did~1~1 (S~did~2~2 (NPB~I~1~1 I/PRP ) (VP~did~3~1 did/VBD not/RB (VP~read~2~1 read/VB (NPB~article~2~2 the/DT article/NN ./PUNC. ) ) ) ) )\n(TOP Source/NN http://www.alwatan.com.sa/daily/2007-01-31/first_page/first_page01.htm/X ./. )\n(NPB~sister~2~2 Your/PRP$ sister/NN //PUNC: )");

StringBuffer b= new StringBuffer();

while (m.find()) {

if(m.group(1) != null) m.appendReplacement(b, "Superman");

else m.appendReplacement(b, m.group(0));

}

m.appendTail(b);

String replaced = b.toString();

System.out.println("\n" + "*** Replacements ***");

System.out.println(replaced);

String[] splits = replaced.split("Superman");

System.out.println("\n" + "*** Splits ***");

for (String split : splits) System.out.println(split);

输出:

*** Replacements ***

(TOP~did~1~1 (S~did~2~2 (NPB~I~1~1 ISupermanPRP ) (VP~did~3~1 didSupermanVBD notSupermanRB (VP~read~2~1 readSupermanVB (NPB~article~2~2 theSupermanDT articleSupermanNN .SupermanPUNC. ) ) ) ) )

(TOP SourceSupermanNN http://www.alwatan.com.sa/daily/2007-01-31/first_page/first_page01.htmSupermanX .Superman. )

(NPB~sister~2~2 YourSupermanPRP$ sisterSupermanNN /SupermanPUNC: )

*** Splits ***

(TOP~did~1~1 (S~did~2~2 (NPB~I~1~1 I

PRP ) (VP~did~3~1 did

VBD not

RB (VP~read~2~1 read

VB (NPB~article~2~2 the

DT article

NN .

PUNC. ) ) ) ) )

(TOP Source

NN http://www.alwatan.com.sa/daily/2007-01-31/first_page/first_page01.htm

X .

. )

(NPB~sister~2~2 Your

PRP$ sister

NN /

PUNC: )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值