ドメインにない相対パスに文字列を含む URL に一致する正規表現
概要
これは私の面接の質問の 1 つです。十分な解決策が思いつかず、拒否されました。
質問は
What is the one regex to match all urls that contain job(case insensitive) in the relative
path(not domain) in the following list:
- http://www.glassdoor.com/job/ABC
- https://glassdoor.com/job/
- HTTPs://job.com/test
- Www.glassdoor.com/foo/bar/joBs
- http://192.168.1.1/ABC/job
- http://bankers.jobs/ABC/job
私の解決策は、先読みと後読み、/(?<!.)job(?!.)/i を使用することでした。これは上記のリストではうまく機能します。ただし、URL が HTTPs://jobs.com/test の場合は機能しません。
この質問に対する正しい答えは何だろうと考えています。何かご提案がございましたら、よろしくお願いいたします。
解決策
URL を検証する必要がない場合は、「ジョブ」だけに注目してください。
# /(?i)(?<=\/)job(?=\/|[^\S\r\n]*$)/
(?i)
(?<= / )
job
(?= / | [^\S\r\n]* $ )