我在Php中寻找一个正则表达式,它可以转换传入的字符串,如下所示:
abaisser_negation_pronominal_question => abaisser_n_p_q
abaisser_pronominal_question => abaisser_p_q
abaisser_negation_question => abaisser_n_q
abaisser_negation_pronominal => abaisser_n_p
abaisser_negation_voix_passive_pronominal => abaisser_n_v_p_p
abaisser => abaisser如果Php代码接近于以下内容:
$line=preg_replace("/<h3>/im", "", $line);你会怎么做?
发布于 2014-12-20 16:27:23
您可以使用\K或正向后查找。
$input = preg_replace('~_.\K[^_\n]*~', '', $input);上述正则表达式中的模式_.将匹配一个_以及下划线后面的字符。\K丢弃以前匹配的字符,即_加上以下字符。它不会考虑到这两个角色。现在,[^_\n]*匹配任何字符,但不匹配_或\n换行符0次或多次。因此,在前面加上下划线的字符后面的字符将匹配到下一个_或\n字符。删除这些字符将为您提供所需的输出。
$input = preg_replace('~(?<=_.)[^_\n]*~', '', $input);它只负责_和_后面的字符,并匹配下一个下划线或换行符之前的所有字符。
发布于 2014-12-20 15:48:23
您可以使用:
$input = preg_replace('/(_[A-Za-z])[^_\n]*/', '$1', $input);解释:
(_[A-Za-z])[^_\n]*,意思是下划线后面跟着单个字母,然后在换行符或下划线之前匹配。(_[A-Za-z])中捕获第一部分$1$1在替换字符串中留下下划线和第一个字母。发布于 2014-12-20 15:47:10
$line = preg_replace("/_([a-z])([a-z]*)/i", "_$1", $line);https://stackoverflow.com/questions/27581763
复制相似问题