Эквивалент для MySQL регулярное выражение - PullRequest
0 голосов
/ 30 мая 2019

Mysql регулярное выражение для этого шаблона:

<table (.+)width:(.+)px

Я пытался вставить этот шаблон в свой запрос, но он все равно будет попадать в элементы, у которых нет шаблона.

Я использую этот сайт, чтобы проверить, попадает ли предмет по вышеуказанному шаблону: https://regex101.com/

Это мой запрос:

select * from wp_posts where post_content regexp '<table (.+)width:(.+)px';

Это мой пример post_content, который является правильным:

<table class="table-schedule" style="width: 737px;">
<tbody>
<tr>
<th>営業時間</th>
<th>月</th>
<th>火</th>
<th>水</th>
<th>木</th>
<th>金</th>
<th class="holiday">土</th>
<th class="holiday">日</th>
<th class="holiday">祝</th>
</tr>
<tr>
<td>11:00~19:00</td>
<td class="weekday maru">○</td>
<td class="weekday maru">休</td>
<td class="weekday maru">○</td>
<td class="weekday maru">○</td>
<td class="weekday maru">○</td>
<td class="holiday">○</td>
<td class="holiday">○</td>
<td class="holiday">○</td>
</tr>
</tbody>
</table>

Это другой пример post_content, который неверен. Это все равно ударит, даже если на столе нет ширины:

<table class="table-schedule">
 <tbody>
 <tr>
 <th>営業時間</th>
 <th>月</th>
 <th>火</th>
 <th>水</th>
 <th>木</th>
 <th>金</th>
 <th class="holiday">土</th>
 <th class="holiday">日</th>
 <th class="holiday">祝</th>
 </tr>
 <tr>
 <td style="text-align: center;">
 <p>11:00~19:00</p>
 </td>
 <td class="weekday maru" style="text-align: center;">○</td>
 <td class="weekday maru" style="text-align: center;">休</td>
 <td class="weekday maru" style="text-align: center;">○</td>
 <td class="weekday maru" style="text-align: center;">休</td>
 <td class="weekday maru" style="text-align: center;">○</td>
 <td class="holiday" style="text-align: center;">休</td>
 <td class="holiday" style="text-align: center;">休</td>
 <td class="holiday" style="text-align: center;">休</td>
 </tr>
 <tr>
 <td style="text-align: center;">
 <p>11:00~17:00</p>
 </td>
 <td style="text-align: center;">休</td>
 <td style="text-align: center;">○</td>
 <td style="text-align: center;">休</td>
 <td style="text-align: center;">○</td>
 <td style="text-align: center;">休</td>
 <td style="text-align: center;">○</td>
 <td style="text-align: center;">休</td>
 <td style="text-align: center;">休</td>
 </tr>
 </tbody>
 </table>

Примечание: MySQL версии 5.6

1 Ответ

2 голосов
/ 30 мая 2019

Хотя ваш текущий шаблон регулярного выражения действителен, он не будет вести себя так, как вы хотите, потому что термины (.+) могут совпадать между тегами. Попробуйте эту версию:

SELECT *
FROM wp_posts
WHERE post_content REGEXP '<table [^>]+width: [0-9]+px';

Демо

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