gpt4 book ai didi

java - 将 Java 字符串拆分为具有特殊字符和复杂情况的空格

转载 作者:行者123 更新时间:2023-12-02 02:05:19 24 4
gpt4 key购买 nike

我有一个输入字符串,例如:

-a  var1=Bat"m/an  -b   var2=" -a="lol "  -c  var3=" M^a%g-i=c "

拆分后我应该得到:

输出

- -a
- var1=Bat"m/an
- -b
- var2=" -a="lol "
- -c
- var3=" M^a%g-i=c "

规则:

  • 格式类似于-(char)(至少一个空格)variable=value
  • 值可以包含除空格之外的任何特殊字符。 bat “m/an
  • 如果用引号括起来,值可以有空格。 "-a="lol ""M^a%g-i=c "

我已经编写了正则表达式,但引号内的引号弄乱了它:

(?:"[^"]*"|\S)+

我还尝试按字符解析或拆分 =" 但我面临歧义,因为它们也可以在引号内。

最佳答案

您可以使用此正则表达式与前瞻断言进行匹配:

-?[a-z_]\w*(?:=".*?"(?=\h+(?:-[a-z](?=\h|$)|[a-z]\w*=)|$)|\S+)?

RegEx Demo

正则表达式说明:

  • -? :以可选的连字符开头
  • [a-z_]\w* :匹配以小写字母或下划线开头,后跟 0 个以上单词字符的变量
  • (?: :启动非捕获组
    • ".*?"(?=...<expression>) :匹配以双引号开头和结尾的带引号的字符串。使用前瞻,我们断言前面有另一个变量或行尾。
    • | :或
    • \S+ : 匹配1个以上非空白字符
  • ) :结束非捕获组

关于java - 将 Java 字符串拆分为具有特殊字符和复杂情况的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50907443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com