C# 如何从字符串中提取浮点数,但不包括同一字符串中的其他数
我有以下字符串: “您已选择:7年固定价格8.25美分/件” 如何在C#中仅从该字符串中提取“8.25” 我尝试了以下正则表达式选项:C# 如何从字符串中提取浮点数,但不包括同一字符串中的其他数,c#,regex,C#,Regex,我有以下字符串: “您已选择:7年固定价格8.25美分/件” 如何在C#中仅从该字符串中提取“8.25” 我尝试了以下正则表达式选项: (\d+)(:\(\d{1,2}))?和-?\d+(?:\。\d+)但两者都只提取“7”,这是它找到的第一个数字。对于此特定示例,您可以使用a并尝试以下操作: (?<float>\d+\.\d+) (?\d+\.\d+) 下面是一个快速演示:使用 \d+(?:\。\d+)(?=\p{Sc}/item) 看 解释 ----------------
(\d+)(:\(\d{1,2}))?
和-?\d+(?:\。\d+)
但两者都只提取“7”,这是它找到的第一个数字。对于此特定示例,您可以使用a并尝试以下操作:
(?<float>\d+\.\d+)
(?\d+\.\d+)
下面是一个快速演示:使用
\d+(?:\。\d+)(?=\p{Sc}/item)
看
解释
--------------------------------------------------------------------------------
\d+ digits (0-9) (1 or more times (matching
the most amount possible))
--------------------------------------------------------------------------------
(?: group, but do not capture (optional
(matching the most amount possible)):
--------------------------------------------------------------------------------
\. '.'
--------------------------------------------------------------------------------
\d+ digits (0-9) (1 or more times (matching
the most amount possible))
--------------------------------------------------------------------------------
)? end of grouping
--------------------------------------------------------------------------------
(?= look ahead to see if there is:
--------------------------------------------------------------------------------
\p{Sc} a currency sign
--------------------------------------------------------------------------------
/item '/item'
--------------------------------------------------------------------------------
) end of look-ahead
规则是什么?请尝试只提取后面没有数字的数字。。\d+(?:\。\d+)(?=\d*$)。是否有更多示例?它们的格式总是这样吗?“7”有时也可以是浮点数吗?例如,“8.5年”似乎完全合理。你能在“、/项目”上匹配吗?是的,更多的示例使其更健壮。你是自己创建字符串还是从外部来源获得的?文本来自Sharepoint列表,字符串内容因列表项目而异。我将用C代码示例进一步更新这个问题。我认为科里维拉的解决方案解决了这个问题,我现在正在测试。谢谢,谢谢你,科利维拉