请问怎么在句子后面追加句子中数字和

使用问题 · 360 次浏览
huimutan 创建于 2023-02-25 16:44

 数字求和
\d+◉✪◒$= Regex.Split($&, "\r?\n").Cast<Match>().Sum(m => int.Parse(m.Value))

代码不对
请问怎么在句子后面追加句子中数字和,不会写,能教我怎么写吗


回复内容
咿呀杀杀 2023-02-25 17:02
#1

示例文本:15加35等于多少?

正则: .+  (匹配你需要求和的句子)

替换为:$= Regex.Matches($&, @"\d+(\.\d+)?").Cast<Match>().Select(m => double.Parse(m.Value)).Sum().ToString()

结果为:50

如果你想得到 15加35等于多少?50 ,上面的表达式前面改一下 $= $& + Regex.Matches..... 就行。

咿呀杀杀 最后更新于 2023-02-25 17:05
huimutan 回复 咿呀杀杀 2023-02-25 17:43 :

感谢回答,测试了一下,它对每一行数字分别进行了求和,我想对这个句子(多行)出现的数字进行求和,应该改哪里呢?

咿呀杀杀 回复 huimutan 2023-02-25 17:47 :

麻烦给出示例文本和期望的结果文本

huimutan 回复 咿呀杀杀 2023-02-25 17:59 :

15和35
还有44和77

试了一下开头用[\s\S]+  匹配所有字符解决了
[\s\S]+◉✪◒$= $& + Regex.Matches($&, @"\d+(\.\d+)?").Cast<Match>().Select(m => double.Parse(m.Value)).Sum().ToString()

咿呀杀杀 回复 huimutan 2023-02-25 18:29 :

嗯,我那个 .+ 是个示例正则,你想哪一部分求和,这个正则就改成匹配这部分的。

这里你是想匹配所有字符(跨行),可以用 (?s).+ 或者你这个也行。

回复主贴