PHP规则从字符串中提取部分

PHP规则从字符串中提取部分,php,regex,Php,Regex,我已经用C#创建了一个正则表达式,但现在我在尝试用PHP运行它时遇到了困难。我想他们也会一样,但显然不是。有人知道下面需要更改什么才能使其正常工作吗 其思想是确保字符串的格式为“Firstname Lastname(Company Name)”,然后提取字符串的各个部分 C#代码: PHP代码(未按预期工作): 可能是因为你用了双引号。PHP可能正在拦截转义序列并将其删除,因为它们无法识别。可能是因为您使用了双引号。PHP可能正在拦截您的转义序列并将其删除,因为它们无法识别。在这里似乎起作用。您

我已经用C#创建了一个正则表达式,但现在我在尝试用PHP运行它时遇到了困难。我想他们也会一样,但显然不是。有人知道下面需要更改什么才能使其正常工作吗

其思想是确保字符串的格式为“Firstname Lastname(Company Name)”,然后提取字符串的各个部分

C#代码:

PHP代码(未按预期工作):


可能是因为你用了双引号。PHP可能正在拦截转义序列并将其删除,因为它们无法识别。

可能是因为您使用了双引号。PHP可能正在拦截您的转义序列并将其删除,因为它们无法识别。

在这里似乎起作用。您应该意识到,当您在正则表达式中捕获匹配项时,PHP生成的数组将包含与整个模式匹配的完整字符串,以及每个单独的捕获组

对于您的姓名/公司名称,您需要使用

$nameMatches[1] -> Firstname
$nameMatches[2] -> Lastname
and
$companyMatches[1] -> Company Name

这就是被捕获组匹配的。两者的
[0]
元素都是整个字符串。

似乎在这里起作用。您应该意识到,当您在正则表达式中捕获匹配项时,PHP生成的数组将包含与整个模式匹配的完整字符串,以及每个单独的捕获组

对于您的姓名/公司名称,您需要使用

$nameMatches[1] -> Firstname
$nameMatches[2] -> Lastname
and
$companyMatches[1] -> Company Name
这就是被捕获组匹配的。两者的
[0]
元素都是整个字符串。

您的模式确实可以提取您想要的信息。尝试将两行print_r()替换为:

print "Firstname: " . $nameMatches[1] . "\n";
print "Lastname: " . $nameMatches[2] . "\n";
print "Company Name: " . $companyMatches[1] . "\n";
这个输出有什么问题吗

Firstname: Firstname 
Lastname: Lastname 
Company Name: Company Name
您的模式似乎确实提取了您想要的信息。尝试将两行print_r()替换为:

print "Firstname: " . $nameMatches[1] . "\n";
print "Lastname: " . $nameMatches[2] . "\n";
print "Company Name: " . $companyMatches[1] . "\n";
这个输出有什么问题吗

Firstname: Firstname 
Lastname: Lastname 
Company Name: Company Name
与单引号字符串一样,转义任何其他字符也会导致打印反斜杠。
-尽管这是最佳实践中的一个有效点。:
与单引号字符串一样,转义任何其他字符也会导致打印反斜杠。
-尽管这是最佳实践中的一个有效点。