使用正则表达式捕获 php
Capturing with regex php
我坚持使用以下正则表达式..
(genre|style).*?(\.|\:|\||\>|\[|\-)
我试图捕捉以下示例中的所有类型,而不是之后的废话..我可以得到几个但不是全部。你能给我解释一下如何捕获所有吗?例如,GENRE:.......Hip-Hop 这行给我带来了麻烦。它还捕获 PLAYTIME.. 如果找到多个空间,我如何停止捕获?
GENRE : Pop cult speech
genre......: Thrash Metal crap1 crap2
genre : House
style: dance
genre.....: house
genre 0djdjd f : House
style | elektronic house
genre > Metal Hard rock
GENRE:........Hip-Hop PLAYTiME:....73:31
Genre..... - Indie Year - 2019
STYLE: Folk
GENRE........[ Euro-House crap crap crap
Genre : Hard Rock crap crap
您可以使用此正则表达式从给定文本中捕获所有 genre/style,
(?:genre|style)(?:\s+\w*)*[ :.|>[-]+\K[a-zA-Z]+(?:[ -][a-zA-Z]+)*
解释:
(?:genre|style)
- 按字面意思匹配 genre
或 style
(?:\s+\w*)*
- 匹配可选文本,这仅用于示例 genre 0djdjd f : House
否则这部分确实不需要
[ :.|>[-]+
- 匹配出现在 genre/style 文本 之前的一个或多个字符
\K
- 重置目前匹配的任何内容
[a-zA-Z]+(?:[ -][a-zA-Z]+)*
- 匹配字母流派文本,可以是单个 space 或连字符分隔的文本。
让我知道这是否准确地捕捉到了您想要的内容。
我坚持使用以下正则表达式..
(genre|style).*?(\.|\:|\||\>|\[|\-)
我试图捕捉以下示例中的所有类型,而不是之后的废话..我可以得到几个但不是全部。你能给我解释一下如何捕获所有吗?例如,GENRE:.......Hip-Hop 这行给我带来了麻烦。它还捕获 PLAYTIME.. 如果找到多个空间,我如何停止捕获?
GENRE : Pop cult speech
genre......: Thrash Metal crap1 crap2
genre : House
style: dance
genre.....: house
genre 0djdjd f : House
style | elektronic house
genre > Metal Hard rock
GENRE:........Hip-Hop PLAYTiME:....73:31
Genre..... - Indie Year - 2019
STYLE: Folk
GENRE........[ Euro-House crap crap crap
Genre : Hard Rock crap crap
您可以使用此正则表达式从给定文本中捕获所有 genre/style,
(?:genre|style)(?:\s+\w*)*[ :.|>[-]+\K[a-zA-Z]+(?:[ -][a-zA-Z]+)*
解释:
(?:genre|style)
- 按字面意思匹配genre
或style
(?:\s+\w*)*
- 匹配可选文本,这仅用于示例genre 0djdjd f : House
否则这部分确实不需要[ :.|>[-]+
- 匹配出现在 genre/style 文本 之前的一个或多个字符
\K
- 重置目前匹配的任何内容[a-zA-Z]+(?:[ -][a-zA-Z]+)*
- 匹配字母流派文本,可以是单个 space 或连字符分隔的文本。
让我知道这是否准确地捕捉到了您想要的内容。