gpt4 book ai didi

c# - 在字符串中搜索特定数字

转载 作者:行者123 更新时间:2023-11-30 13:41:42 26 4
gpt4 key购买 nike

我正在尝试想出一个闪电般快速的解决方案来查找字符串中的部分。这是一个示例字符串:

“PostLoad 成功!您已将 17.00 卢比转入 03334224222。现在请调用 123 使用 PostLoad。短信上的 PostLoad 将于 01-03-2011 结束。”

目标:需要检索粗体值:Amount 和 Cell Number。字符串内容略有变化,但单元格编号始终为 11 位数字。金额始终精确到两位小数。使用 C# 和 RegEx 有什么建议吗?

最佳答案

Regex regexObj = new Regex(@"(\b\d+\.\d{2}\b).*?(\b\d{11}\b)");
Match matchResults = regexObj.Match(subjectString);
while (matchResults.Success) {
for (int i = 1; i < matchResults.Groups.Count; i++) {
Group groupObj = matchResults.Groups[i];
if (groupObj.Success) {
// matched text: groupObj.Value
// match start: groupObj.Index
// match length: groupObj.Length
}
}

解释:

(       # Match and capture the following:
\b # Assert that the match starts at a "word boundary"
\d+ # Match one or more digits
\. # Match a .
\d{2} # Match exactly two digits
\b # Assert that the number ends here
) # End of first capturing group
.*? # Match any number of intervening characters; as few as possible
( # Match and capture...
\b # Word boundary
\d{11} # Exactly 11 digits
\b # Word boundary
) # End of match

第 1 组将包含十进制数,第 2 组将包含 11 位数字。

“单词边界”是字母数字字符和非字母数字字符之间的位置,因此它仅匹配“单词或数字”的开头或结尾。

这确保不会匹配像 12.3456 这样的数字;另一方面,数字必须由空格、标点符号或其他非字母字符分隔。例如,在 number12.34 中,正则表达式不会匹配 12.34

关于c# - 在字符串中搜索特定数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4688783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com