Php 正则表达式匹配字符串,直到第一次出现小数点后跟一个制表符

Php 正则表达式匹配字符串,直到第一次出现小数点后跟一个制表符,php,regex,Php,Regex,我正在寻找一个正则表达式来实现以下功能:从一个列表中,我只希望所有字符串在第一次出现小数点后都有一个制表符。这些字符串只能位于每行的开头。使用我当前的regex/^(\S+\)/gm我甚至可以得到一个有2个或更多小数点的字符串 下面是一些示例代码(空格实际上是选项卡): 我需要的是aaa.,abarth.,ai.和xn--ngbc5azd.但不是a0.nic.abarth.或whois.ai或任何其他小数点超过1的字符串 谢谢 您可以使用 '~^[^.\r\n]+\.(?=\t)~m' 看注意

我正在寻找一个正则表达式来实现以下功能:从一个列表中,我只希望所有字符串在第一次出现小数点后都有一个制表符。这些字符串只能位于每行的开头。使用我当前的regex
/^(\S+\)/gm
我甚至可以得到一个有2个或更多小数点的字符串

下面是一些示例代码(空格实际上是选项卡):

我需要的是
aaa.
abarth.
ai.
xn--ngbc5azd.
但不是
a0.nic.abarth.
whois.ai
或任何其他小数点超过1的字符串

谢谢

您可以使用

'~^[^.\r\n]+\.(?=\t)~m'
注意:如果将行作为单独的字符串传递,则不需要
\r\n
m
修饰符)

详细信息

  • ^
    -行的起始位置(因为
    m
    修饰符使
    ^
    匹配行的起始位置)
  • [^.\r\n]+
    -1+字符,而不是
    、LF和CR
  • \。
    -一个点
  • (?=\t)
    -在
    之后必须有一个选项卡
:

输出:

Array
(
    [0] => aaa.
    [1] => abarth.
    [2] => ai.
    [3] => xn--ngbc5azd.
)

延迟回答,但您也可以使用:

preg_match_all( '/^([^.]+\.)\t/m', $x, $m, PREG_PATTERN_ORDER );
print_r( $m[1] );




当然,示例文本中没有选项卡。但是如果有,
(?m)^[^\s.]*\.(?=\t)
或者您可以使用其他垃圾
Array
(
    [0] => aaa.
    [1] => abarth.
    [2] => ai.
    [3] => xn--ngbc5azd.
)
preg_match_all( '/^([^.]+\.)\t/m', $x, $m, PREG_PATTERN_ORDER );
print_r( $m[1] );
Array
(
    [0] => aaa.
    [1] => abarth.
    [2] => ai.
    [3] => xn--ngbc5azd.
)