首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移除尾随字符的正则表达式

移除尾随字符的正则表达式
EN

Stack Overflow用户
提问于 2014-12-20 15:43:30
回答 4查看 71关注 0票数 1

我在Php中寻找一个正则表达式,它可以转换传入的字符串,如下所示:

代码语言:javascript
复制
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代码接近于以下内容:

代码语言:javascript
复制
$line=preg_replace("/<h3>/im", "", $line);

你会怎么做?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-12-20 16:27:23

您可以使用\K或正向后查找。

代码语言:javascript
复制
$input = preg_replace('~_.\K[^_\n]*~', '', $input);

上述正则表达式中的模式_.将匹配一个_以及下划线后面的字符。\K丢弃以前匹配的字符,即_加上以下字符。它不会考虑到这两个角色。现在,[^_\n]*匹配任何字符,但不匹配_\n换行符0次或多次。因此,在前面加上下划线的字符后面的字符将匹配到下一个_\n字符。删除这些字符将为您提供所需的输出。

演示

代码语言:javascript
复制
$input = preg_replace('~(?<=_.)[^_\n]*~', '', $input);

它只负责__后面的字符,并匹配下一个下划线或换行符之前的所有字符。

演示

票数 0
EN

Stack Overflow用户

发布于 2014-12-20 15:48:23

您可以使用:

代码语言:javascript
复制
$input = preg_replace('/(_[A-Za-z])[^_\n]*/', '$1', $input);

RegEx演示

解释:

  • 此正则表达式搜索(_[A-Za-z])[^_\n]*,意思是下划线后面跟着单个字母,然后在换行符或下划线之前匹配。
  • 它在反向引用(_[A-Za-z])中捕获第一部分$1
  • 替换是$1在替换字符串中留下下划线和第一个字母。
票数 2
EN

Stack Overflow用户

发布于 2014-12-20 15:47:10

代码语言:javascript
复制
$line = preg_replace("/_([a-z])([a-z]*)/i", "_$1", $line);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27581763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档