Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用正则表达式php捕获_Php_Regex_Regex Group - Fatal编程技术网

用正则表达式php捕获

用正则表达式php捕获,php,regex,regex-group,Php,Regex,Regex Group,我被下面的正则表达式卡住了 (genre|style).*?(\.|\:|\||\>|\[|\-) 我试图捕捉以下示例中的所有类型,而不是后面的垃圾。。我可以得到一些,但不是全部。你能给我解释一下如何捕捉所有的吗?例如,线条类型:……嘻哈给我带来了麻烦。它还可以捕捉游戏时间。。如果发现多个空间,如何停止捕获 GENRE : Pop cult speech genre......: Thrash Metal crap1 crap2 genre : House

我被下面的正则表达式卡住了

(genre|style).*?(\.|\:|\||\>|\[|\-)
我试图捕捉以下示例中的所有类型,而不是后面的垃圾。。我可以得到一些,但不是全部。你能给我解释一下如何捕捉所有的吗?例如,线条类型:……嘻哈给我带来了麻烦。它还可以捕捉游戏时间。。如果发现多个空间,如何停止捕获

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)(?:\s+\w*)*[ :.|>[-]+\K[a-zA-Z]+(?:[ -][a-zA-Z]+)*
说明:

  • (?:流派|风格)
    -按字面意思匹配
    流派
    风格
  • (?:\s+\w*)*
    -匹配可选文本,这仅适用于示例
    类型0djd f:House
    ,否则确实不需要此部分
  • [:.|>[-]+
    -匹配出现在类型/样式文本之前的一个或多个字符
  • \K
    -重置迄今为止匹配的内容
  • [a-zA-Z]+(?:[-][a-zA-Z]+)*
    -匹配按字母顺序排列的体裁文本,可以是单个空格或连字符分隔的文本


让我知道这是否正是您想要的。

为什么有
(体裁风格)
您是否在寻找以这两个开头的行?您在想要的行和之后的垃圾行之间没有明确的界限。您必须确定一个不同的分隔符。如果您不能这样做,那么它就不能被分隔开!这很好!谢谢您的解释!我永远无法确定。@user1997874:很高兴提供帮助。也请考虑接受我的答案,如果它解决了你的问题。