我的正则表达式没什么问题。
UBS GROUP N(UBSG / CH0244767585)
2017年8月2日
时间价格量 11:37:30 15.44 4447
11:37:29 15.44 432
首先,我已经找到了时间和价格:
价格:vc.scale(-1, -1)
时间:\d+\.\d{1,2}
现在我需要音量,这就是问题所在。 问题:我可以做和有条件吗?如何?
\d{1,2}:\d{2}:\d{2}
和[^\d+\.\d{1,2}]
以及[^\d{1,2}:\d{2}:\d{2}]
?
我测试了一些没有结果的东西。谢谢你的帮助!
答案 0 :(得分:0)
如果您只想要音量而不使用其他音量,请使用\d+$
如果没有,请在评论中使用Wiktor建议的正则表达式。
答案 1 :(得分:0)
您可以编写一个与整个字符串匹配的正则表达式,并捕获您只需要的内容。
\d{1,2}:\d{2}:\d{2}\s+\d+\.\d{1,2}\s+(\d+)
请参阅regex demo,仅捕获(\d+)
,该值将驻留在Match.Groups[1]
。
<强>详情:
\d{1,2}:\d{2}:\d{2}
- 1或2个数字感染,:
,2位数,:
和2位\s+
- 1个或多个(+
)空格符号\d+\.\d{1,2}
- 1位数字,文字.
,然后是1或2位数字\s+
- 1个或多个(+
)空格符号(\d+)
- Capturing group#1 匹配并在内存缓冲区中存储1位数字。C#:
var results = Regex.Matches(s, @"\d{1,2}:\d{2}:\d{2}\s+\d+\.\d{1,2}\s+(\d+)")
.Cast<Match>()
.Select(m => m.Groups[1].Value)
.ToList();
另外,要抓取行末尾的一个或多个数字,您可以使用(?m)\d+\r?$
并获取匹配值:
var results = Regex.Matches(s, @"(?m)\d+\r?$")
.Cast<Match>()
.Select(m => m.Value)
.ToList();
(?m)
内联修饰符会使$
与行的结尾匹配,而不是整个字符串。另外,如果行结尾为CRLF,则必须在\r?
之前添加$
。