2

10000 行を超えるテキストのセットから、一連の html タグの後のスペースが欠落している文字列のすべてのインスタンスを見つける必要があります。HTML タグのセットは、次のように制限されています。

<b> </b>, <em> </em>, <span style="text-decoration: underline;" data-mce-style="text-decoration: underline;"> </span> <sub> </sub>, <sup> </sup>, <ul> </ul>, <li> </li>, <ol> </ol>

Regx を実行すると、次の文字列が結果として返されます。

Hi <b>all</b>good morning.

この場合のように、太字のタグの後にスペースがありません。

4

1 に答える 1

3

C# の場合:

StringCollection resultList = new StringCollection();
Regex regexObj = new Regex("^.*<(?:/?b|/?em|/?su[pb]|/?[ou]l|/?li|span style=\"text-decoration: underline;\" data-mce-style=\"text-decoration: underline;\"|/span)>(?! ).*$", RegexOptions.Multiline);
Match matchResult = regexObj.Match(subjectString);
while (matchResult.Success) {
    resultList.Add(matchResult.Value);
    matchResult = matchResult.NextMatch();
} 

リスト内のいずれかのタグの後に少なくとも 1 つのスペースがあるファイル内のすべての行を返します。

入力:

This </b> is <b> OK
This <b> is </b>not OK
Neither <b>is </b> this.

出力:

This <b> is </b>not OK
Neither <b>is </b> this.

説明:

^      # Start of line
.*     # Match any number of characters except newlines
<      # Match a <
(?:    # Either match a...
 /?b   #  b or /b
|      # or 
 /?em  #  em or /em
|...   # etc. etc.
)      # End of alternation
>      # Match a >
(?! )  # Assert that no space follows
.*     # Match any number of characters until...
$      # End of line
于 2012-06-08T07:29:30.883 に答える