starvedcat
V2EX  ›  问与答

正则表达式问题

  •  
  •   starvedcat · Nov 27, 2016 · 1453 views
    This topic created in 3477 days ago, the information mentioned may be changed or developed.

    现有字符串:

    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);
    		}
    	}
    }
    

    应该怎么写呢?

    Supplement 1  ·  Nov 27, 2016

    这次应该真的解决了,用这个

    (,| |(?=.)(?=\\())
    
    8 replies    2016-11-27 15:07:32 +08:00
    starvedcat
        1
    starvedcat  
    OP
       Nov 27, 2016
    (?=regex)这个用法我是看 http://www.regular-expressions.info/refadv.html 这里的……
    starvedcat
        2
    starvedcat  
    OP
       Nov 27, 2016
    连续的空格最多一个(之前有其他的处理)
    starvedcat
        3
    starvedcat  
    OP
       Nov 27, 2016
    已解决,用",| |(=[\\(])"就行……现在理解那个用法
    starvedcat
        4
    starvedcat  
    OP
       Nov 27, 2016
    真是打搅了,管理员在的话麻烦人工下沉。。。
    rrfeng
        5
    rrfeng  
       Nov 27, 2016
    split 只能根据『某个字符』切割,没法根据『某个位置』切割。虽然 regex 里有表示『某个位置』的语法。
    所以一次应该是不行的,可以考虑加一次替换。
    rrfeng
        6
    rrfeng  
       Nov 27, 2016
    @starvedcat 看来我肤浅了。。。。
    starvedcat
        7
    starvedcat  
    OP
       Nov 27, 2016
    等等,搞错了,还是没解决= = 继续。。。
    starvedcat
        8
    starvedcat  
    OP
       Nov 27, 2016
    @rrfeng 我脑残了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2835 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:58 · PVG 20:58 · LAX 05:58 · JFK 08:58
    ♥ Do have faith in what you're doing.