4

我想检索之间的字符串|2~ and |

使这项工作的正则表达式序列是什么?

据说我有|2~21381030213jafjs231|adfafafasdfas我正在使用

StringTokenizer test = new StringTokenizer(string, delim);

我试过 StringTokenizer(string, "//|/2/~%s/|") // 不起作用。

但它不起作用。

您能否详细说明正则表达式的工作原理(例如正则表达式序列的工作原理)?或开始调查的好链接。

谢谢

4

2 回答 2

3

如果您需要正则表达式,.*~(.*)\|就可以了。这是一个正则表达式 101 来证明它。现在,要解释正则表达式,它非常简单:

  • .*告诉引擎匹配所有字符;
  • ~然后告诉引擎在找到~;时停止
  • (.*)然后告诉引擎匹配所有字符并将它们分组为匹配项;
  • \|然后最后告诉引擎匹配|哪个将停止分组。

但是要学习正则表达式,请查看这个站点,它是网络上最好的之一。

于 2013-09-17T14:17:43.433 回答
3

StringTokenizer不支持正则表达式。您需要使用Pattern&Matcher

String  s = "|2~21381030213jafjs231|adfafafasdfas";
Matcher m = Pattern.compile("\\|\\d~([^|]+)\\|").matcher(s);
if ( m.find() ) {
  System.out.println(m.group(1));
}
于 2013-09-17T14:20:16.667 回答