StringScanner和scan_until

时间:2017-09-21 01:15:47

标签: ruby

这是一个简单的例子:

<x>

我有兴趣扫描scan和其他所有内容(无论可能是什么)的实例。我无法真正使用<x>因为我不知道ss.scan_until(/<x>/) => "aaa <x>" ss[0] => "<x>" 以外的文字格式(我也不关心)。

ss[0]

所以pre_match给了我正则表达式匹配的内容。我如何获得其余文本? result.sub(ss[0], '')将所有内容都抓回到原始字符串的开头,而不是回到上一个指针。作为解决方法,我只需要["aaa ", "<x>"," bbb ccc ", "<x>", " ddd ", "<x>"] 来获取我的文本。看起来很笨重,几乎就像我没有使用我错过的某种方法。

为了澄清,我想要这个输出:

for line in my_keywordfile.readlines():
    for keyword in line.strip("[]").strip("'").split(","):

1 个答案:

答案 0 :(得分:0)

您可以使用split来完成其余工作:

string.split(/<x>/)
#=> ["aaa ", " bbb ccc ", " ddd "]

编辑:为了保留包括分隔符的顺序,正如Cary指出的那样,只需通过捕获组在分割中包含分隔符:

string.split(/(<x>)/)
#=> ["aaa ", "<x>", " bbb ccc ", "<x>", " ddd ", "<x>"]