0
的新行或開始我需要匹配一個郵戳,再看看後面,直到字符串的開始或新的生產線正面看,直到串
模式
$date_day_pattern = '(?:0[1-9]|[12][0-9]|3[01])';
$date_month_pattern = '(?:0[1-9]|1[0-2])';
$date_year_pattern = '(?:[12][0-9]|20[12][0-9])';
$prefix_pattern = '(?<=[^\n]*)';
$date_pattern = "(?<!\d|\d)($date_day_pattern)[^\d\n]?($date_month_pattern)[^\d\n]?($date_year_pattern)(?!\d)";
preg_match("/$prefix_pattern$date_pattern/", $input, $matches);
輸入
dksj dkk
49.. dk /ak 01-05-2012 hey
kdks
匹配
\\ 1 49.. dk /ak
\\ 2 01
\\ 3 05
\\ 4 2012
類似於['^([^ \ nb] *)(b)'](https://regex101.com/r/zM5sR3/1)?你能否確定要求? Lookbehinds不會消耗文本,儘管您可以使用它們捕獲子字符串。 –
匹配模式比僅僅加工'b'更復雜,所以你的解決方案將不起作用 – clarkk
你可以簡單地使用'r'(。*)b''第一組將是'b'之前的字符串直到換行,或者在多行標誌處使用'^(。*)b'。當你知道它時,甚至不需要第二組爲'b'字符。 – Kasramvd