正则表达式 - 边框字符内的美元符号
regular expression - dollar signs within border characters
在 php 中,我试图匹配两个被边框字符包围的连续美元符号,但我似乎无法弄清楚模式。以下是我要匹配的示例字符串:
$string = '$$';
$string = ' $$ ';
$string = "\n$$\n";
以下是我尝试过的模式:
$pattern = '/\b$$\b/'; // First attempt at escaping dollar signs
$pattern = '/\b\$\$\b/'; // Maybe backslashes need to be escaped
$pattern = '/\b$$\b/'; // Maybe dollar signs shouldn't be escaped
$pattern = "/\b$$\b/"; // Maybe we need double quotes for special characters
$pattern = "/\b\$\$\b/"; // Double quotes and double-escaping
None 以上模式 return 的任何匹配 运行:
preg_match($pattern, $string);
有什么想法吗?谢谢。
在我发布这个答案之前,OP 和@JonStirling 基本上都解决了这个问题。您的第一个模式 \b$$\b
是正确的,至少从正确转义美元符号的角度来看是这样。问题是单词边界主要处理单词和非单词之间的边界。由于美元符号不是单词字符,因此 \b
的行为不符合您的要求。
这里有一个替代方案,它使用环视作为单词边界的代理:
$string = ' $$';
$pattern = '/(?<=\s|^)$$(?=\s|$)/';
echo preg_match($pattern, $string, $match);
这里的逻辑是我们检查美元符号两边的空格或字符串的 start/end。
在 php 中,我试图匹配两个被边框字符包围的连续美元符号,但我似乎无法弄清楚模式。以下是我要匹配的示例字符串:
$string = '$$';
$string = ' $$ ';
$string = "\n$$\n";
以下是我尝试过的模式:
$pattern = '/\b$$\b/'; // First attempt at escaping dollar signs
$pattern = '/\b\$\$\b/'; // Maybe backslashes need to be escaped
$pattern = '/\b$$\b/'; // Maybe dollar signs shouldn't be escaped
$pattern = "/\b$$\b/"; // Maybe we need double quotes for special characters
$pattern = "/\b\$\$\b/"; // Double quotes and double-escaping
None 以上模式 return 的任何匹配 运行:
preg_match($pattern, $string);
有什么想法吗?谢谢。
在我发布这个答案之前,OP 和@JonStirling 基本上都解决了这个问题。您的第一个模式 \b$$\b
是正确的,至少从正确转义美元符号的角度来看是这样。问题是单词边界主要处理单词和非单词之间的边界。由于美元符号不是单词字符,因此 \b
的行为不符合您的要求。
这里有一个替代方案,它使用环视作为单词边界的代理:
$string = ' $$';
$pattern = '/(?<=\s|^)$$(?=\s|$)/';
echo preg_match($pattern, $string, $match);
这里的逻辑是我们检查美元符号两边的空格或字符串的 start/end。