Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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 - Fatal编程技术网

Php 在破折号后选择单词,不要在单词后选择任何内容

Php 在破折号后选择单词,不要在单词后选择任何内容,php,regex,Php,Regex,假设我有两个这样的文件 font-normal.otf font-bold.ttf etc 我想选择破折号后面的单词,也就是“正常”,就这样。不是。orf。我怎样才能做到 我有这个,但它也选择了.otf部分 [^-]+$ 正则表达式的问题是,[^-]+匹配所有内容(连字符除外),直到行尾,而您只希望从-匹配到 使用以下正则表达式: /^.*?([^-]+)\..*$/m 说明: ^-在行首断言位置 *?-匹配除换行符以外的任何字符(延迟) ([^-]+)-再匹配(并捕获)一个非连字符 \

假设我有两个这样的文件

font-normal.otf
font-bold.ttf
etc
我想选择破折号后面的单词,也就是“正常”,就这样。不是。orf。我怎样才能做到

我有这个,但它也选择了.otf部分

[^-]+$

正则表达式的问题是,
[^-]+
匹配所有内容(连字符除外),直到行尾,而您只希望从
-
匹配到

使用以下正则表达式:

/^.*?([^-]+)\..*$/m
说明:

  • ^
    -在行首断言位置
  • *?
    -匹配除换行符以外的任何字符(延迟)
  • ([^-]+)
    -再匹配(并捕获)一个非连字符
  • \。
    -匹配文字点字符(
  • *
    -匹配所有其他内容,直到行尾(贪婪地)
  • $
    -在行尾断言位置

  • m
    -多行修饰符(使
    ^
    $
    在每行的开始和结束处匹配)

代码:

输出:

数组
(
[0]=>正常
[1] =>粗体
)

正则表达式的问题是,
[^-]+
匹配所有内容(连字符除外),直到行尾,而您只希望从
-
匹配到

使用以下正则表达式:

/^.*?([^-]+)\..*$/m
说明:

  • ^
    -在行首断言位置
  • *?
    -匹配除换行符以外的任何字符(延迟)
  • ([^-]+)
    -再匹配(并捕获)一个非连字符
  • \。
    -匹配文字点字符(
  • *
    -匹配所有其他内容,直到行尾(贪婪地)
  • $
    -在行尾断言位置

  • m
    -多行修饰符(使
    ^
    $
    在每行的开始和结束处匹配)

代码:

输出:

数组
(
[0]=>正常
[1] =>粗体
)

正则表达式的问题是,
[^-]+
匹配所有内容(连字符除外),直到行尾,而您只希望从
-
匹配到

使用以下正则表达式:

/^.*?([^-]+)\..*$/m
说明:

  • ^
    -在行首断言位置
  • *?
    -匹配除换行符以外的任何字符(延迟)
  • ([^-]+)
    -再匹配(并捕获)一个非连字符
  • \。
    -匹配文字点字符(
  • *
    -匹配所有其他内容,直到行尾(贪婪地)
  • $
    -在行尾断言位置

  • m
    -多行修饰符(使
    ^
    $
    在每行的开始和结束处匹配)

代码:

输出:

数组
(
[0]=>正常
[1] =>粗体
)

正则表达式的问题是,
[^-]+
匹配所有内容(连字符除外),直到行尾,而您只希望从
-
匹配到

使用以下正则表达式:

/^.*?([^-]+)\..*$/m
说明:

  • ^
    -在行首断言位置
  • *?
    -匹配除换行符以外的任何字符(延迟)
  • ([^-]+)
    -再匹配(并捕获)一个非连字符
  • \。
    -匹配文字点字符(
  • *
    -匹配所有其他内容,直到行尾(贪婪地)
  • $
    -在行尾断言位置

  • m
    -多行修饰符(使
    ^
    $
    在每行的开始和结束处匹配)

代码:

输出:

数组
(
[0]=>正常
[1] =>粗体
)

如果你只是想保持简单,你可以选择

 $str = file_get_contents("test.txt"); // your file names in test.txt (or pass them with string if you want...)
 $string2 = preg_match_all('/-([\w ]+)/', $str, $matches);
现在,$matches[1]数组包含-和之间的所有字符串。(如果它们只是单词字符;如果您需要数字和其他字符,您只需使用适当的

使用此选项可以从示例中打印“正常”和“粗体”

echo $matches[1][0];
echo $matches[1][1];

如果你只是想保持简单,你可以选择

 $str = file_get_contents("test.txt"); // your file names in test.txt (or pass them with string if you want...)
 $string2 = preg_match_all('/-([\w ]+)/', $str, $matches);
现在,$matches[1]数组包含了-到之间的所有字符串。(如果它们只是单词字符;如果需要数字和其他字符,则只需使用适当的\w更改即可。)

使用此选项可以从示例中打印“正常”和“粗体”

echo $matches[1][0];
echo $matches[1][1];

如果你只是想保持简单,你可以选择

 $str = file_get_contents("test.txt"); // your file names in test.txt (or pass them with string if you want...)
 $string2 = preg_match_all('/-([\w ]+)/', $str, $matches);
现在,$matches[1]数组包含了-到之间的所有字符串。(如果它们只是单词字符;如果需要数字和其他字符,则只需使用适当的\w更改即可。)

使用此选项可以从示例中打印“正常”和“粗体”

echo $matches[1][0];
echo $matches[1][1];

如果你只是想保持简单,你可以选择

 $str = file_get_contents("test.txt"); // your file names in test.txt (or pass them with string if you want...)
 $string2 = preg_match_all('/-([\w ]+)/', $str, $matches);
现在,$matches[1]数组包含了-到之间的所有字符串。(如果它们只是单词字符;如果需要数字和其他字符,则只需使用适当的\w更改即可。)

使用此选项可以从示例中打印“正常”和“粗体”

echo $matches[1][0];
echo $matches[1][1];

这应该足够简单
-([^.]+)

编辑:

  • -
    匹配破折号
  • 捕获组
    • [^.]
      任何不是文字点的东西
    • +
      贪婪
  • 关闭捕获组

这应该足够简单
-([^.]+)

编辑:

  • -
    匹配破折号
  • 捕获组
    • [^.]
      任何不是文字点的东西
    • +
      贪婪
  • 关闭捕获组
    • 这应该很简单