Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用高级正则表达式拆分字符串_Java_Regex - Fatal编程技术网

Java 使用高级正则表达式拆分字符串

Java 使用高级正则表达式拆分字符串,java,regex,Java,Regex,我正在尝试使用正则表达式拆分以下表单的字符串: “/say hello world(你好)(你好吗”)” 这应分为: /说 你好 世界 (你好) (你好吗) 在“”(空格)上拆分显然不起作用,因为我不想在括号内拆分字符串。这样的事情怎么可能实现呢? 另外,值得注意的是:我正在使用PCRE进行解析。您可以为此创建自己的解析器: 1.如果您找到(增加一个计数器(在您的方法中创建),则在字符串字符上迭代以查找”。 2.如果您找到”,并且计数器为0,则取子字符串直到该点,并添加到数组中(将内部变量重

我正在尝试使用正则表达式拆分以下表单的字符串:

“/say hello world(你好)(你好吗”)”

这应分为:

  • /说
  • 你好
  • 世界
  • (你好)
  • (你好吗)
在“
(空格)上拆分显然不起作用,因为我不想在括号内拆分字符串。这样的事情怎么可能实现呢?
另外,值得注意的是:我正在使用PCRE进行解析。

您可以为此创建自己的解析器:
1.如果您找到
增加一个计数器(在您的方法中创建),则在字符串字符上迭代以查找

2.如果您找到
,并且计数器为0,则取子字符串直到该点,并添加到数组中(将内部变量重置为(如果有)以在循环中工作)。

3.如果您发现
并且计数器仍然不是零,那么忽略它并再次转到步骤1。

您可能需要编写一个基本的解析器来处理您的用例,因为一个简单的正则表达式无法处理它。好的,这就是我之前所做的。我只是想知道是否有一种更干净、更好的方法来使用regex。有趣的事实:regexp作为一种正式语言实际上无法解决您的问题。另一方面,大多数regexpes的实现实际上能够解决您的问题。所以,如果你想要一个解决方案,你必须告诉我们你使用的是哪个解析器。我使用的是PCRE,我想这就是你的意思。我将它添加到post中。正则表达式当然可以是您在解析器中使用的东西,但它本身无法处理它(注意:有递归正则表达式这样的东西,例如在Perl中,但Java不支持)。