如何使用正则表达式匹配和复制所有内容到第一次出现的字符?

时间:2018-01-20 17:47:49

标签: regex

示例文字格式:

$date =  date("Y-m-d 00:00:",strtotime("-1 days", time()));
$to = "BTC" ; 
$sql = "SELECT * 
        FROM `pricing_data` 
        WHERE `Label`='$to' 
        AND `Timestamp` LIKE '$date%' 
        LIMIT 1" ;

我希望匹配并复制“|”之前的所有内容。 我的正则表达式:tom@yahoo.com,age:30|http://.... tom1@yahoo.com,age:31|http://.... tom2@yahoo.com,age:32|http://.... 这将匹配“|”之前的所有内容,如何复制所有出现的内容?

第二个问题 示例文本格式:

^[^|]+

如何匹配和复制200磅及以下的所有文本和范围。所以应该提取并复制前两行。

1 个答案:

答案 0 :(得分:1)

<强>正则表达式

  1. (?m)^[^|]+

  2. (?m)^[^|]+\|\b(?:[1]?[0-9][0-9]?|200)\slb\b(?m)^[^|]+\|\b(?:1?\d\d?|200)\slb\b

  3. <强>详情:

    • (?m)多行
    • +匹配一次且无限次
    • []匹配列表中的单个字符
    • [^]匹配列表中不存在的单个字符
    • |
    • \d匹配一个数字(等于[0-9]
    • ?匹配0到1次
    • (?:)非捕获组
    • \s匹配任何空格字符

    Regex demo 1. Question

    Regex demo 2. Question