正则表达式社区

求一个正则表达式分隔字符串

查看: 168
时间: 2021-07-16

String str = "IF(a=1,1,2)";

String str1 = "IF(a=1,AND(1=1),2)";

String str2 = "IF(AND(a=1,b=2),1,2)";

String str3 = "IF(a=1,1,2,3)";

我想把IF里面的字符串根据逗号分隔成数组

比如str分隔成数组,数组里面元素是[a=1, 1, 2],

str1分隔成数组里面元素是[a=1, AND(1=1), 2],,以此类推


最后一次编辑于 2021-07-16 14:31
15 个回答
  • 大白兔 2021-07-16

    意思是把最外面的小括号变成 花括号?

  • 🥜 2021-07-16
    @大白兔

    不是的,我是想获取IF括号里面的数据,按照逗号进行分隔,最后结果用数组返回

  • 大白兔 2021-07-16
    用户评论违反社区规定被删除!
  • 大白兔 2021-07-16
    @🥜

    源字符串是什么,最后要得到的结果是什么

  • 🥜 2021-07-16
    @大白兔

    源字符串就是上面的str,str1,str2,str3,这几个字符串是我给的几个示例

    最后想要的结果就是对IF里面的字符串根据逗号进行分隔,返回字符串数组

    比如源字符串是IF(a=1,AND(1=1),2),我想要的结果是返回一个数组,里面的数据是[a=1, AND(1=1), 2]

  • 大白兔 2021-07-16

    由于你这个字符串有括号嵌套,得用两个正则实现了

    第一个正则拿到括号里面的内容:

    /(?<=IF\().*(?=\))/


    第二个正则按逗号分割:用全局模式匹配

    /[^,]+(?=(,|$))/


  • 🥜 2021-07-16
    @大白兔

    第二个正则按逗号分割针对IF(a=1,1,2)里面没有其他表达式的是可以的

    但是IF(AND(a=1,b=2),1,2) 这样的情况就不行了,我需要的是[AND(a=1,b=2), 1, 2],但是返回的是[AND(a=1,b=2),1,2],不应该针对里面还有IF或者AND表达式里面再分隔

  • 🥜 2021-07-16
    @🥜

    我需要的是3个元素AND(a=1,b=2)、1、2

    返回的是4个元素AND(a=1、b=2、1、2

  • 大白兔 2021-07-16
    @🥜
    我需要的是[AND(a=1,b=2), 1, 2],但是返回的是[AND(a=1,b=2),1,2],

    这两个有什么区别?

  • 🥜 2021-07-16
    @大白兔

    我需要的是3个元素AND(a=1,b=2)、1、2

    返回的是4个元素AND(a=1、b=2、1、2

  • 大白兔 2021-07-16
    @🥜

    那这样就没什么规律了,有的逗号要分割,有的逗号又不要分割

  • 大白兔 2021-07-16
    @🥜

    试试这个

    /((^AND\(.*?\))|\d+)/


  • 🥜 2021-07-16
    @大白兔

    IF(AND(a=1,b=2),1,2)这种情况可以

    但是IF(AND(a=1,b=2),AND(a=3,b=4),2) 这种情况不行

  • 大白兔 2021-07-16
    @🥜

    /((AND\(.*?\))|\d|[a-z]=\d)/


  • 🥜 2021-07-16
    @大白兔

    这个是可以的

    但是还有点细节

    IF(AND(a=1,b=2),AND(a=3,b=4),a)

    或者 IF(AND(a=1,b=2),AND(a=3,b=4),张三)

    或者 IF(AND(a=1,b=2),AND(a=3,b=4),)也是可以匹配的,

    也就是说可以是数字,字母,中文,空格,表达式


©2019 - 2020 正则社区版权所有 ICP证:浙14008037号-4联系我们:chanchow163@163.com

本站所有内容、图片未经过私人授权,禁止进行任何形式的采集、镜像、复制和转载,否则后果自负!

站长微信:chanchow163,备注:正则代写