html_タグを表す文字列から_要素名のみ取得_正規表現


str_html_tag02

 = '''<td rowspan="2" class="colC">

<p>Bランク</p>

</td>'''


上記のようなpythonの文字列の変数があるときに、


html要素のうちの タグの<の次にくる

要素名を取得するための正規表現を定義する際、


先頭の<を除き、

要素名は通常アルファベットで定義されているようですから、

任意のアルファベットの1個以上のもので構成されるのでしょうか?



はい、その通りです。


HTMLのタグ名(要素名)は通常、

英字(`A-Z` または `a-z`)で始まり、

その後に英数字(`A-Z`, `a-z`, `0-9`)や

ハイフン(`-`)が続くことが許可されています。


ただし、一般的なHTMLタグは英字のみで始まることが多いです。


正規表現で `<` の次の要素名を取得するには、


以下のように定義できます。


```python


import re


pattern = r'<([a-zA-Z][a-zA-Z0-9-]*)'


str_html_tag02 = 


'''<td rowspan="2" class="colC">

<p>Bランク</p></td>'''


match = re.search(pattern, str_html_tag02)


if match:


# 出力: td

    print(match.group(1))  

```


### 正規表現の説明:


- `<` の次に来る **要素名** を取得するために

`<([a-zA-Z][a-zA-Z0-9-]*)` を使用


  - `[a-zA-Z]` → 要素名は英字で始まる


  - `[a-zA-Z0-9-]*`

→ その後、英数字または `-`(ハイフン)が続く


- `re.search()` を使って最初に見つかったタグ名を取得



このパターンを使えば、

HTMLのタグ名(`td`, `p`, `div`, `span` など)

を適切に抽出できます。



コメント