使用正则表达式匹配可变长度字符串

时间:2012-08-08 00:53:17

标签: ruby regex

我正在尝试编写一个与可变长度字符串匹配的正则表达式,删除某些文本。以下是一些尝试实现的例子:

Equipment Changes: 2 - Mon Rose - Blinkers On;7 - Queen's Harbor - Blinkers On

会产生

2 - Mon Rose - Blinkers On;7 - Queen's Harbor - Blinkers On

上述示例包括2个设备更改,但是,可能会有1到12个设备更改。我希望一个正则表达式可以处理所有情况。马名称将随着设备类型的变化而变化(Blinkers On,Blinkers Off,Bar Shoe等)

我可以匹配一个,但我对变量要求有困难。

我的匹配一个设备更改的代码如下:

(Equipment Changes:)\s[\dA-Z]{1,2}\s-\s[A-Za-z\d]{1,18}\s-\s[A-Z]\s?[a-z]+\s[A-Za-z]+\s?[A-Za-z]

这匹配一个设备更改。我希望能够+或{1,12}使其处理多个更改。

任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:1)

如果您没有尝试分离设备更改,这应该可行。 (将所有内容传递到冒号,然后取出其余的字符串。)

    .*:(.*\z)

如果您尝试将它们分开,则可以使用分号进行拆分。 (将所有内容传递到冒号,然后将字符串中的部分用分号分隔,最后一部分在字符串结束时结束。)

    .*:(.*;)*(.*)\z