红宝石 - 如何拉出两个“点”之间的? [复制]

Posted

技术标签:

【中文标题】红宝石 - 如何拉出两个“点”之间的? [复制]【英文标题】:Ruby - how to pull out that is betweet two "points"? [duplicate] 【发布时间】:2013-05-16 12:13:33 【问题描述】:

我有这样的文字:

...
Sentence one. hsjdhsd jghdsjghjdskhgjksdh kjghdsjkg

sdgsdg
dgds
hfdhdf
h
fdh
dfh Sentence two. gdjshagjhsdga sdgjhsdkjgh adskjghdsa
gs a
gfdgfdhfdhh
...

我需要从这一段中提取字符串之间的文本(实际上是一个句子句子一。句子二。

各位大侠,能帮帮我吗,怎么拉?

谢谢

【问题讨论】:

你没有包括你目前拥有的东西? 我怀疑您是否能够使用合理的正则表达式区分任意真实句子和胡言乱语。某种简单的解析器可能是你最好的选择。 /Sentence one(.*?)Sentence two/m 可以工作,但前提是Sentence oneSentence two 是精确的并且没有嵌套。 【参考方案1】:

看看你有什么,你句子的开头和结尾分别是大写字母和句号。您可以构造一个正则表达式,提取大写字母和之后的第一个句点之间的文本。

但这可能是一个人为的例子;看起来你可能在键盘中间有随机键,所以这可能不是你实际乱码的特征。

【讨论】:

【参考方案2】:

试试这样([A-Z]1.*\.)?

【讨论】:

【参考方案3】:

使用条件触发器表达式

鉴于您的语料库如上定义:

ruby -ne 'puts $_ if /Sentence/ ... /Sentence/' /tmp/corpus

将输出:

Sentence one. hsjdhsd jghdsjghjdskhgjksdh kjghdsjkg

sdgsdg
dgds
hfdhdf
h
fdh
dfh Sentence two. gdjshagjhsdga sdgjhsdkjgh adskjghdsa

【讨论】:

以上是关于红宝石 - 如何拉出两个“点”之间的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

sql 显示如何拉出列表,在特定日期之间拉出某些上诉和贡献,以及(customer 4)按customer_no和HAVING S分组

用红宝石实例化Foo? [复制]

如何计算两个经纬度之间的距离[重复]

安排任务在两个日期之间每天运行两次

如何知道现在时间是否在两个小时之间?

如何在两个SQLSERVER之间实现数据同步