我正在寻找一个正则表达式来分割以下字符串:
.name "收集器显示压力".target "目标".curio_result_type "负".chance 80% .stress 10.0 .on_hit true .on_miss false.queue true
进入:
.name“收藏家展示压力”
.target“目标”
.curio_result_type“阴性”
.机会 80%
.压力10.0
.on_hit true
.on_miss false
.queue true
我使用了以下正则表达式来匹配,但它也分割了 double :
\.[^.]+
我得到的结果是:
.name“收藏家展示压力”
.target“目标”
.curio_result_type“阴性”
.机会 80%
.压力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 次以上
关于c# - 使用以点开头的正则表达式匹配字符串,不包括 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60801131/