0

境界上の単語に一致する正規表現を作成しようとしていますが、テキストが html にあるため、 にある単語を避ける必要があり<a>here more words</a>ます。

今のところ私の正規表現は次のとおりです。/\bword\b/u

テキスト例:

<p>Example lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur <a href="">porta lorem nec</a> tortor laoreet gravida.</p>

単語の検索はlorem、 ではなく、先頭でのみ置換する必要があります<a>

4

2 に答える 2

8

次のようないくつかの闇の力を使用できます。

<a[^>]*>.*?</a\s*>(*SKIP)(*FAIL)|\blorem\b

それを分解しましょう:

<a[^>]*>            # match an opening "a" tag
.*?                 # match anything ungreedy until ...
</a\s*>             # match a closing "a" tag
(*SKIP)(*FAIL)      # skip it
|                   # or
\blorem\b           # match lorem with boundaries

aしたがって、基本的には最初にすべてのタグをスキップしてから、 に一致させloremます。

See a working demo

于 2013-11-11T18:13:58.720 に答える
1

/u in your regexp may be inappropriate or unneeded. it's usually to indicate unicode in PHP but for example not allowed in JavaScript.
Or it may be that you're using preg_match instead of preg_match_all in your PHP

于 2013-11-11T15:53:16.510 に答える