我对微软的regex(正则表达式)有疑问。我在这种模式下写了一个日志文件。
2017-02-20 15:58:45.442 - [XYZ] 155 RADIO_TRAIN_TO_TRACK_INITIATION_COM_SESSION
.VAR1p
.VAR2o
.VAR3i
.VAR4u
2017-02-20 15:58:46.432 - [XYZ] 32 RADIO_TRACK_TO_TRAIN_CONFIGURATION_DETERMINATION
.VAR1
.VAR2
.VAR3
.VAR4
.VAR5
.VAR6
2017-02-20 15:58:48.541 - [XYZ] 158 RADIO_TRAIN_TO_TRACK_INITIATION_COM_SESSION
.VAR1x
.VAR2c
.VAR3v
.VAR4f
.VAR5d
.VAR6s
我的问题是:如何从2017-02-20 15:58:45.442 - [XYZ] 155 ...到.VAR4u(包括,所有消息155的所有文本)以及所有文本中提取所有文本消息158(时间戳包括)
我已编写此代码,但无法正常运行
(?<=\[XYZ] \b155\b(?:(?!\n\d{4}-\d{2}-\d).)*?\n {3,}\.)|(?<=\[XYZ] +\b158\b(?:(?!\n\d{4}-\d{2}-\d).)*?\n {3,}\.)
此致
答案 0 :(得分:1)
DnGrep工具使用奇怪的.NET正则表达式实现:一旦使用超前限制,最后一行就不匹配了。它一定是个bug。
无论如何,将起作用的是
class ItemCell: UITableViewCell {
// this view to take all the label from the view and link it here
@IBOutlet weak var thump: UIImageView!
@IBOutlet weak var Title: UILabel!
@IBOutlet weak var Price: UILabel!
@IBOutlet weak var Deatials: UILabel!
// using this function to set the values of the items with the labels been linked before in upper section
func ConfigureCellsInCellclass (item:Item){
Title.text = item.title
Price.text = ("$\(item.price)")
Deatials.text = item.details
}
}
选中 Mulitline 和 Dot作为换行符复选框。
(?m)^\d{4}-\d{2}-\d{2} \d{2}:[\d.:]+ - \[(?:RBC] +\b24|TRENO] \b156)\b(?:(?!\n\d{4}-\d{2}-\d).)*\.\w+[^\r\n]*
部分是必要的,以匹配最后一行的非空白部分(\.\w+[^\r\n]*
匹配点,\.
- 1+字词和\w+
将匹配CR和LF以外的一个或多个符号,可以替换为[^\r\n]*
)。
这部分 - (?-s:.*) - a modifier group where the "Dot as newline" should be disabled
- 用于避免重复整个模式(正如您在评论中所做的那样)。这将匹配\[(?:RBC] +\b24|TRENO] \b156)
,然后是[
+空格+24或RBC]
(两者都是整个单词,因为模式后面有TRENO 156
。)