用于拆分String的正则表达式,使用空格,除非在引号和括号内

问题描述 投票:0回答:1

我正在使用正则表达式学习,我创建了[\""].+?[\""]|[^ ]+来分割我的字符串IF "1" + "1" = "Yes And No" THEN "1" ELSE 0。这很好地分裂了我的字符串:

  • 如果
  • "1"
  • +
  • "1"
  • =
  • “是的,不是”
  • 然后
  • "1"
  • 其他
  • 0

现在我希望我的正则表达式使用带引号和空格的相同规则拆分此字符串IF ("1" + "1") = "Yes And No" THEN "1" ELSE 0,但如果它们在括号内,则忽略引号。该字符串应拆分为:

  • 如果
  • ("1" + "1")
  • =
  • “是的,不是”
  • 然后
  • "1"
  • 其他
  • 0

如何通过正则表达式和解释来实现这一点,以便我也可以了解它是如何完成的?

regex
1个回答
2
投票

我想你可以使用正则表达式:\([^\)]+?[\)]|[\""].+?[\""]|[^ ]+

这基本上是你的正则表达式,另一种选择在开头考虑括号并匹配所有内容直到结束括号。正则表达式的其余部分是您之前定义的替代方法(例如,将引号中的字符与空格中的字符作为分隔符进行匹配)

这个演示可以在这里看到:https://regex101.com/r/L0sC4U/1

*请注意,regex101是理解正则表达式的好资源(请查看调试视图,您可以在此处轻松发布示例以供将来使用。

© www.soinside.com 2019 - 2024. All rights reserved.