我是Regex的新手。我想解析以下数据。我已经提出了一些正则表达式,似乎可以在sublime上工作,但当我在visual studio中测试时,它无法工作。我想知道是否有人可以提供一个简单的例子或指导如何使用正则表达式解析这个。这一定很简单,一定是我的错误,我理解,所以提前道歉。
这是我正在处理的数据。
Fri 11:00 - 12:00
Max Agents: 1
Min Agents: 2
Total Calls: 3
Answered Calls: 4
Abandoned Calls: 5
Average Time to Answer (secs): 6
Longest Time to Answer (secs): 7
Average Time in Call (secs): 8
Longest Time in Call (secs): 9
Average Time before Abandon (secs): 10
Per agent statistics:
Agent: 1001
From Direct Call:
Total Calls Answered : 11
Average Time in Call (secs) : 12
Longest Time in Call (secs) : 13
From Queue:
Total Calls Answered : 2
Average Time in Call (secs) : 14
Longest Time in Call (secs) : 15
Agent: 1002
From Direct Call:
Total Calls Answered : 1
Average Time in Call (secs) : 16
Longest Time in Call (secs) : 17
From Queue:
Total Calls Answered : 2
Average Time in Call (secs) : 18
Longest Time in Call (secs) : 19
Queue related statistics:
Total calls presented to the queue: 20
Calls answered by agents: 21
Number of calls in the queue: 22
Average time to answer (secs): 23
Longest time to answer (secs): 24
Number of abandoned calls: 25
Average time before abandon (secs): 26
Calls forwarded to voice mail: 27
Calls answered by voice mail: 28
Number of error calls: 29
这是一个和它唯一得到的代理:1004部分。
Agent:.(?<agentNum>\d+)\n?((?:[a-z\s]+from.*\n)+\s(?:[a-z\s]+call.*\n)+)?((?:[a-z\s]+from.*\n)+[\n\s]+(?:[a-z\s]+call.*\n)+)?
我试图提取数据的不同属性,如总呼叫回答平均时间在呼叫
等等,我基本上想为那些类型的字段提取数据,并存储在一个表中。
3条答案
按热度按时间7qhs6swi1#
只要文本格式良好,并且总是以相同的顺序打印出来,我根本不会使用正则表达式,我会逐行使用函数解析文本。
slsn1g292#
不知道你想做什么,但这里是如何使用Regex解析字符串的部分。
1tu0hz3e3#
你在正则表达式中使用了很多
.
,我建议你避免使用它。相反,通过匹配 [任何不是我**感兴趣的] 来匹配一大组你不感兴趣的字符。在这种情况下,你想要数字,对吗?我会这样做(
\D
与大写D的意思是[任何不是数字的]):我假设数据集总是像你的例子一样格式化,行顺序永远不会改变,数字也不会省略(而是设置为0)。
我没有C#或任何东西来测试我是否正确使用了
(?<NameSubgroup>matchPattern)
,我也不熟悉C#必须迭代匹配并提取命名子组的方法,但这应该会让你走上正确的道路。(?:\D+)
中的?:
确保非数字组不会被捕获到我使用的语言中的子组中。