2014-03-12 32 views
-2

我有一个关键字列表叫[猫,狗,鸟]和一个正则表达式来找到一个权重(\ dlbs)。查找两个字符串之间有最大数量的字符

我只是想找到的项目,

  1. 开始与数组中的项目
    • (猫|狗|?鸟)
  2. 比赛重正则表达式
    • (\ dlbs)
  3. 仅1和2之间 有30个字符(不包括空格)一个最大
    • 不想或照顾捕捉1-30个字符

感谢任何帮助!

+3

什么是字符串你有? –

+0

downvotes(和投票结束)是从谁相信你的问题是不清楚的读者。字符串看起来像是“猫20磅,狗60磅,鸟450磅”还是“我的猫重20磅,我的狗60磅,450磅的大鸟尖”或其他什么东西?是每个“物品”你想要找到一个数组(例如'['狗',60]'),一个子字符串(“狗是60磅”)还是其他?用一个方法'doit(str)'来想想这个。你想让'doit'返回几个示例字符串中的每一个(包括'猫狗40磅'等'边缘情况')。通过编辑你的问题来做到这一点(不带评论),毫不拖延。 –

+0

我很抱歉,SO的难点之一是你必须提出一个问题,同时晦涩的实际数据足以满足......“客户”。当我发现我的(愚蠢的)错误时,我觉得埃德应该得到他的及时和适当答案的荣誉。但是,如果你决定关闭它,我会明白。 – Rabbott

回答

1

这将做到这一点:

(cat|dog|bird)\s*(?:(?:\S\s*){0,30})(\dlbs) 

Regular expression visualization

Debuggex Demo

编辑,以体现 “不计空格” 点。

匹配,例如,每个以下的:

The cat weighs almost exactly 7lbs. 
The cat weighs       almost exactly 7lbs 

注意:您似乎对你的问题流浪?(cat|dog|bird?) - 我已经忽略了它。另外,你确定你有\dlbs,而不是17 lbs17 pounds?您可以轻松地解决这些场景与

(cat|dog|bird)\s*(?:(?:\S\s*){0,30})(\d\s*(?:lb|pound)s) 
+0

谢谢埃德!我尝试过,但似乎没有捕获我想要做的事情.. – Rabbott

+0

怎么样?空白部分? –

+0

请参阅我的编辑以解决空白问题。 –

1

(\s*.){0,30}最多30个字符不含空格:

(cat|dog|bird)(\s*.){0,30}\s*(\dlbs) 
相关问题