我想将以下字符串拆分为+,但我无法成功获取正确的正则表达式。
String input = "SOP3a'+bEOP3'+SOP3b'+aEOP3'";
我希望得到像这样的结果
[SOP3a'+bEOP3', SOP3b'+aEOP3']
在某些情况下,我可能会有以下字符串
c+SOP2SOP3a'+bEOP3'+SOP3b'+aEOP3'EOP2
应该拆分为
[c, SOP2SOP3a'+bEOP3'+SOP3b'+aEOP3'EOP2]
我尝试了以下正则表达式,但它不起作用。
input.split("(SOP[0-9](.*)EOP[0-9])*\\+((SOP)[0-9](.*)(EOP)[0-9])*");
感谢任何帮助或建议。
谢谢
答案 0 :(得分:1)
您真的需要使用MATCH (u1:Person {id: "1234"}), (u2:Person {id: "5678"}) MERGE (u1)-[r:KNOWS]->(u2) ON CREATE SET r.duration = 12, r.count = 1 ON MERGE SET r.duration = 12, r.count = r.count + 1 RETURN r
方法吗?
规则是什么?他们不清楚。
无论如何,考虑到你提供的正则表达式,我只删除了一些不必要的组,但我找到了你要找的东西,但是,我只是加入了匹配,因为分裂会生成一些空元素。
$ ./manage.py migrate --database=<db_name_1>
$ ./manage.py migrate --database=<db_name_2>
答案 1 :(得分:1)
您可以使用以下 regex 来匹配字符串,并使用捕获的组替换它,您可以获得预期的结果:
(?m)(.*?)\+(SOP.*?$)
以下是适用于您的Java代码:
public static void main(String[] args) {
String input = "SOP3a'+bEOP3'+SOP3b'+aEOP3'";
String pattern = "(?m)(.*?)\\+(SOP.*?$)";
Pattern regex = Pattern.compile(pattern);
Matcher m = regex.matcher(input);
if (m.find()) {
System.out.println("Found value: " + m.group(0));
System.out.println("Found value: " + m.group(1));
System.out.println("Found value: " + m.group(2));
} else {
System.out.println("NO MATCH");
}
}
m.group(1)
和m.group(2)
是您要查找的值。