正则表达式,提取选择文本

时间:2017-04-12 20:27:40

标签: regex msdn dngrep

我对微软的(正则表达式)有疑问。我在这种模式下写了一个日志文件。

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,}\.)

此致

1 个答案:

答案 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。)