正则表达式问题

2016-11-27 14:59:12 +08:00
starvedcat  starvedcat

现有字符串:

people(aa, bb) VALUES (1, 2)
(注意, people 后面没有空格, VALUES 后面有一个空格)

我需要把它分割成:

people
(aa
bb)
VALUES
(1
2)

语言是 Java

我不太会的点在于:我希望把空格和逗号吃掉,但是保留括号

我现在的进展:

public class T {
	public static void main(String[] args) {
		String str = "people(aa, bb) VALUES (1, 2)";
		String parts[] = str.split(",| |(?=[\\(])");

		for (String part : parts) {
			System.out.println(part);
		}
	}
}

应该怎么写呢?

1105 次点击
所在节点   问与答  问与答
8 条回复
starvedcat
starvedcat
2016-11-27 15:00:11 +08:00
(?=regex)这个用法我是看 http://www.regular-expressions.info/refadv.html 这里的……
starvedcat
starvedcat
2016-11-27 15:01:23 +08:00
连续的空格最多一个(之前有其他的处理)
starvedcat
starvedcat
2016-11-27 15:03:51 +08:00
已解决,用",| |(=[\\(])"就行……现在理解那个用法
starvedcat
starvedcat
2016-11-27 15:04:23 +08:00
真是打搅了,管理员在的话麻烦人工下沉。。。
rrfeng
rrfeng
2016-11-27 15:06:35 +08:00
split 只能根据『某个字符』切割,没法根据『某个位置』切割。虽然 regex 里有表示『某个位置』的语法。
所以一次应该是不行的,可以考虑加一次替换。
rrfeng
rrfeng
2016-11-27 15:07:13 +08:00
@starvedcat 看来我肤浅了。。。。
starvedcat
starvedcat
2016-11-27 15:07:16 +08:00
等等,搞错了,还是没解决= = 继续。。。
starvedcat
starvedcat
2016-11-27 15:07:32 +08:00
@rrfeng 我脑残了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/323618

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX