如何获得文本没有一些单词(一个&号问题)


How to get text without some word (an ampersand issue)

我有一个这样的字符串:Hello @"用户名"你来自哪里,用户名?我需要得到&quot之间的字符串;语句(用户名),但我不知道怎么做。

我尝试过这样的东西/@("(.*)"|(.[^ ]*))'s*/,但它工作错误

首先,捕获所需数据的一个可能的正则表达式是@"(.+?)",它匹配以@开头的引号中的任何数据,并捕获其中的数据。现在您已经添加了您尝试过的正则表达式,我打赌问题是您的表达式是贪婪的:正则表达式引擎试图获取尽可能长的匹配,因此返回所有@"user name". Where are you from, @"user name"。添加?使表达式变得懒惰,因此它将获取较短的匹配。

由于您对其中的内容感兴趣,我猜您的最终目标是用各种类型的用户数据动态地替换这些字符串,因此一种方法是preg_replace_callback:

function user_data($matches) {
  $key = $matches[1];
  // return the user data for a $key like "user name"
}
$output = preg_replace_callback('/@"(.+?)"/', 'user_data', $input);

试着看看这个:http://www.php.net/manual/en/function.strstr.php您可能需要在空格之后爆炸,并从数组中获取第一项

如果每个字符串只有一个@"...",那么像这样的操作应该可以工作

$matches = array();
preg_match("/@'"(.+?)'"/i", $inputstring, $matches);
echo($matches[1]);

试试这个,如果不行,就转义pattern

中的"
/'@'&quote';(['w's]{0,})'&quote';/