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

Mar*_*ark 104 regex

我在Yahoo Pipes中有一个Feed,想要在问号后匹配所有内容.

到目前为止,我已经找到了如何匹配问号使用..

\?
Run Code Online (Sandbox Code Playgroud)

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

the*_*ejh 220

\?(.*)
Run Code Online (Sandbox Code Playgroud)

您想要第一个捕获组的内容.

  • @Mark如果这是你需要的(即使这个问题已经老了!),请将此标记为答案. (14认同)
  • @Dreamonic不要以为它正在发生:( (5认同)
  • @Starkers你是对的.它不会发生.自从2011年2月5日10点41分以来,马克一直没有出现过.指出我们得到的每一个改变仍然是好的.也许有人会向Dreamonic学习指出这一点. (3认同)
  • 10年后你好:)。此答案与问号之后的所有内容匹配,但包含问号。如何从比赛中删除问号? (3认同)
  • @Matthew,尝试 `(?<=\?).*` 这只会匹配 `?` 之后的所有内容 (3认同)
  • 你将如何捕捉最后一个问号后的内容?我想从那以后“锚定” - 我不确定锚这个词是否正确。 (2认同)
  • @BKSpurgeon ^.*\?([^?]*)$ 中的第一个捕获组应该可以工作 (2认同)

Mar*_*ers 51

试试这个:

\?(.*)
Run Code Online (Sandbox Code Playgroud)

括号是一个捕获组,您可以使用它来提取您感兴趣的字符串部分.

如果字符串可以包含新行,则可能必须使用"全部点"修饰符以允许点与新行字符匹配.您是否必须这样做,以及如何执行此操作取决于您使用的语言.您似乎忘记提及您在问题中使用的编程语言.

如果您的语言支持固定宽度的lookbehind断言,则可以使用另一种替代方法:

(?<=\?).*
Run Code Online (Sandbox Code Playgroud)


Dar*_*ron 28

凭借积极的外观技术:

(?<=\?).*

(我们在这里搜索一个带有问号的文字)

Input: derpderp?mystring blahbeh
Output: mystring blahbeh
Run Code Online (Sandbox Code Playgroud)

基本上?<=是一个组构造,需要转义的问号,才能进行任何匹配.

它们表现非常好,但并非所有实现都支持它们.


Hos*_*adi 11

?(.*\n)+

有了这个你可以获得一切甚至一条新线


s3v*_*v3n 9

\?(.*)$
Run Code Online (Sandbox Code Playgroud)

如果你想在"?"之后匹配所有字符 您可以使用组来匹配任何字符,并且最好使用"$"符号来表示行尾.

  • 在大多数正则表达式实现中,默认情况下“.”与换行符不匹配。因此,即使表达式中没有行尾字符,它也会匹配到行尾。 (2认同)