1

次のようなタグが含まれるドキュメントがたくさんあります(太字):

Lorem ipsum dolor sit amet、\ConsecTeturTitle。Sed posuere consectetur estatlobortis。Lorem ipsum dolorは、amet、consecteturadipiscingelitに座ります。\ textit { \ QuamLoremTitle } \ specialnote {{ \ EgestasMagnaTitle } Vivamus sagittis lacus vel augue laoreet rutrum faucibusdolorauctorを参照してください。Nullam quis risus eget urna mollis ornare veleuleo。Cras justo odio、dapibus ac facilisis in、egestasegetquam。

私はそれらを見つけるためにこれを使用しています:

\\[A-Z].*Title

それは最初のものでうまくいきます:

\ ConsecTeturTitle

ただし、次の2つと、その間のすべてを次のように選択します。

\ QuamLoremTitle} \specialnote{{\EgestasMagnaTitleを参照

私は答えを見つけるために検索してきましたが、検索する適切なものを知るのに十分な正規表現についての知識がないのではないかと心配しています。

基本的に、「\」で始まり大文字で始まり「タイトル」で終わるすべてのタグを見つける必要があります。次に、それらを「\hl」に置き換える必要があります

私は次のようにPHPでそれを行うことを計画しています:

preg_replace( '\\[A-Z].*Title', '\hl', $docContents );

どんな助けでも大歓迎です!

4

1 に答える 1

2

その正規表現には問題があります。余分なドットが含まれています。代わりに、次のようなものを使用する必要があります。

\\[A-Za-z]+Title

既存の式の問題は、任意の数の文字.*に一致し、貪欲に一致することです(つまり、継続して最後に一致する限り、停止することはありません)。つまり、「最初の」一致で一致を開始し、最後の一致であるはずの「タイトル」接尾辞で停止するまで文字を飲み続けます。Title

于 2012-04-06T17:02:48.117 に答える