Regex исключить пробел из выделения - PullRequest
0 голосов
/ 27 мая 2019

Я пытался искать текстовое содержимое в нескольких html-файлах с помощью регулярных выражений.

Я создал регулярное выражение ((?<=>)[^<>]+?(?=([\s\r]*<))), которое работает нормально, но результаты поиска также включают только пробельные значения и начальные пробелы.

<h1>test</h1>
<table class="table table-striped table-bordered custom-table" width="100%" align="center" frame="box" bgcolor="white"
    id="dtGrid" style="background:#fff !important;">
    <thead>
        <tr>
            <th>
                Type
            </th>
        </tr>
    </thead>
</table>

Результат поиска будет иметь test, Type и несколько других результатов только с пробелами. Как удалить из результатов поиска только значения пробелов и начальные пробелы?

1 Ответ

0 голосов
/ 27 мая 2019

Попробуйте это:

(?<=>)\s*+([^<>]+?(?=(?:[\s\r]*<)))

У вас есть демо здесь .

Результаты будут в первой группе захвата

Это то, что я изменил по сравнению с вашим исходным регулярным выражением.

 (?<=>)\s*+([^<>]+?(?=(?:[\s\r]*<)))
^      ^   ^          ^
|      |   |           \__ Used a non-caturing group (just recommended)
|      |   |
|      |   \___ This is now the begin of the capturing group
|      |   
|      \___ Added whitespaces with possesive quantifier (cannot backtrack)
|
\__ Removed beginning of first capturing group

Наконец, если вы не хотели использовать группу захвата и использовали вместо этого только совпадения, вы можете использовать это регулярное выражение:

(?<=>)\s*+\K[^<>]+?(?=(?:[\s\r]*<))

Это похоже на предыдущий.Разница в том, что используется \K до забыть текущую соответствующую строку.

У вас есть новое демо здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...