繁体   English   中英

使用以点开头的正则表达式匹配字符串不包括双打

[英]Using regex match string that start with dot excluding doubles

我正在寻找一个正则表达式来拆分以下字符串:

.name "Collector Show Stress" .target "target" .curio_result_type "negative" .chance 80% .stress 10.0 .on_hit true .on_miss false.queue true

进入: .name "Collector Show Stress" .target "target" .curio_result_type "negative" .chance 80% .stress 10.0 .on_hit true .on_miss false .queue true

我使用以下正则表达式进行匹配,但它也将双倍分割: \\.[^.]+

我得到的结果是: .name "Collector Show Stress" .target "target" .curio_result_type "negative" .chance 80% .stress 10 .0 .on_hit true .on_miss false .queue true

在正则表达式方面,我基本上是一个新手,因此感谢任何帮助。

我在 C# 控制台应用程序中使用正则表达式。

提前致谢!

要匹配您的示例数据,您可以匹配第二部分的可用选项:

\.[^.\s]+ (?:"[^"]+"|true|false|[0-9]+(?:\.[0-9]+)?%?)

解释

  • .[^.\\s]+匹配。 以及 1+ 次出现的任何字符,点或空白字符除外
  • (?:非捕获组
    • "[^"]+"匹配从开头到结尾的双引号"..."
    • | 或者
    • true匹配字面意思
    • | 或者
    • false字面匹配
    • | 或者
    • [0-9]+(?:\\.[0-9]+)? 将 1+ 位数字与可选的小数部分匹配
    • %? 匹配一个可选的百分比符号
  • )关闭群组

正则表达式演示

较不严格的模式可能是不匹配一个点,或者匹配一个点后跟一个数字

\.[^.]+ (?:[^.\s]|\.(?=[0-9]))+

解释

  • .[^.]+匹配一个点后跟 1+ 次除点以外的任何字符
  • (?:非捕获组
    • [^.\\s]匹配除点或空格字符以外的任何字符
    • | 或者
    • \\.(?=[0-9])匹配一个点,直接在右边断言一个数字
  • )+关闭组并重复 1+ 次

正则表达式演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM