第一个时期和空白之间的正则表达式直到下一个时期

问题描述 投票:0回答:3

我知道这应该比我做的更容易。对不起,如果这是一个简单的问题。

我正在为我的Rails应用程序使用正则表达式(根据语言改变正则表达式吗?)我想采用这样的短语:“我不熟悉RegExp。希望SO能帮到我这里。这是第三个不应包括的句子。“并且RegExp返回“希望SO会帮助我在这里”(没有句点和开头的空格,没有句号结尾)

这是我到目前为止所尝试的:

^([^(.)\s]+)

([^\.\s]+)

((\.\s))

\.\s+\K.+

我真的不知道该怎么做。再次感谢你的帮助!

ruby-on-rails regex
3个回答
1
投票

这应该工作。它将第二句捕获为“希望SO能帮助我在这里”。

\.\s*([\w\s]*)\.

1
投票

感谢您的评论使我能够解决这个问题。最终的解决方案最终得到以下结论:

\A[^.]*\.\s\K[^.]*(?=\.)

翻译:

\A声明字符串的开头

[^.]*说你可以拥有尽可能多的字符或空格(只要它们在第一个时期之前)

\.\s找到了第一个时期和空白

然后\K包含表达式中的所有内容

[^.]*包括每个字符或空格,直到第一个时期

(?=\.)表示在开始后的第一个时期后停止(标记为\ K)

再次感谢您的帮助!


1
投票

你可以用

s[/\.\s+([^.]+)\./, 1]

Ruby demo,输出:Hopefully SO will help me out here

这里,[/regex/, 1]语法意味着你想将regex应用于s字符串并且只输出第1组的内容。因此,你真的不需要\K match reset operator,但你肯定可以使用

s[/\.\s+\K[^.]+(?=\.)/]

这将产生相同的结果。

© www.soinside.com 2019 - 2024. All rights reserved.