正则表达式匹配问号后的所有内容?


125

我在Yahoo Pipes中有一个供稿,想在问号后匹配所有内容。

到目前为止,我已经弄清楚了如何使用。

\?

现在只是为了匹配问号之后/之后的所有内容。


2
\?.*匹配之后的所有内容(包括一个空字符串)?
khachik 2010年

您正在使用哪种编程语言?
Mark Byers 2010年

1
对于使用Java的用户,它是"\\?"
CodyBugstein 2014年

Answers:


251
\?(.*)

您需要第一个捕获组的内容。


15
@Mark如果这是您所需要的(即使这个问题很旧!),也请将此标记为答案。
Pieter VDE 2013年

5
@Dreamonic不要以为它正在发生:(
Starkers 2013年

4
@Starkers你说对了。不会发生的 马克从此没来Feb 5 '11 at 10:41。指出我们得到的每一个变化仍然是一件好事。也许有人会向Dreamonic学习,指出这一点。
DutGRIFF 2014年

1
在最后一个问号之后,您将如何捕获内容?我想从此开始“锚定”-我不确定锚点是否正确。
BKSpurgeon

2
@BKSpurgeon ^。* \?([^?] *)$中的第一个捕获组应该起作用
thejh 2015年

61

试试这个:

\?(.*)

括号是一个捕获组,可用于提取感兴趣的字符串部分。

如果字符串可以包含换行符,则可能必须使用“点全部”修饰符,以允许点匹配换行符。是否必须执行此操作以及如何执行此操作,取决于您使用的语言。看来您忘记了在问题中使用的编程语言了。

如果您的语言支持在断言后使用固定宽度的后向声明,则可以使用的另一种替代方法是:

(?<=\?).*

固定宽度喔 我可以回头看看这样的事情吗?主题:代码,编程,设计因此,我想选择冒号,并回头看直到主题的首字母T,然后向前看到底?(在该行的这种情况下端是“设计”。
马克

@Mark:您使用什么语言?
Mark Byers 2010年

我正在使用正则表达式以外的Yahoo Pipes。我得到这个问题的回答,现在寻找的是选择后面的冒号和多达6个字符(全)一个正则表达式向前..
马克

@Mark:我检查了您的问题清单,但没有看到您的新问题。您确定已发布吗?
Mark Byers 2010年

我稍后会再问这个新问题。猜猜最好让我的问题分开,确实应该同时提出两个问题。谢谢
马克2010年

36

使用积极的落后技术:

(?<=\?).*

(我们正在此处搜索带有问号的文本)

Input: derpderp?mystring blahbeh
Output: mystring blahbeh

基本上,这?<=是一个小组构造,在进行任何匹配之前,都需要转义的问号。

它们的性能确实很好,但并非所有实现都支持它们。


13
\?(.*)$

如果要匹配“?”之后的所有字符 您可以使用组来匹配任何字符,最好使用“ $”符号来指示行尾。


1
在大多数正则表达式实现中.,默认情况下,该字符与换行符不匹配。结果,即使表达式中没有行尾字符,它也将匹配到行尾。
Mark Byers 2010年

2

请访问以下站点:http : //rubular.com/基本上,该站点允许您输入一些示例文本(您将在站点上查找的内容),然后在构建正则表达式时它将突出显示匹配的内容即时的。


谢谢你,你知道怎么匹配一个冒号吗?在冒号之前还有一定数量的字符?
标记

/([a-zA-Z]{4}):/将比赛Test: Welcome并抢Test
奥斯汀·林

0

str.replace(/^.+?\"|^.|\".+/, '');

当您想选择要在“”之间删除的其他内容并且在一个字符串中使用两次以上时,有时会很难使用。它所做的只是选择“”之间的任何内容,然后将其替换为任何内容。

即使是对我来说,这也有点令人困惑,但是请尝试解释一下。^.+?(不是任何可选的),直到第一次,"然后|Or / stop(仍在研究其真正含义),直到/ at ^.在第二次"使用(|stop / at)之前没有选择任何内容。然后选择。+之后的所有内容。


请考虑添加代码说明,以便我们了解其功能以及原因。
鲸鱼巫师皮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.