私の正規表現:
(?<=(?i)start\s+date\s+)([0-9]{2}[\.]{1}[0-9]{2}[\.]{1}[0-9]{4})
「開始日」という単語が前に付いている日付を一致させようとしていますが、日付のみを返したいのです。
たとえば、「開始日01.01.2000」の一致は「01.01.2000」を返す必要があります。私は近いことはわかっていますが、式の最初の部分が結果に含まれないように見えます。どんな助けでも大歓迎
(?<=start\sdate)\s+([0-9]{2}[\.]{1}[0-9]{2}[\.]{1}[0-9]{4})
動作します。問題は \s+ にあると思います。可変長の後ろを見てください。ほとんどの正規表現エンジンは、可変長の後読みを実装していません。
これを試して:
(?<=start\sdate\s)([0-9]{2}\.[0-9]{2}\.[0-9]{4})
に一致する文字列を常に探している場合はstart date ##.##.####
、次のようになります。
start date ([0-9]{2}\.[0-9]{2}\.[0-9]{4})
ただし、その場合は、単純に行うこともできます
substr($string, strrpos($string, "start date ") + 11, 10);