【发布时间】:2014-08-21 10:25:47
【问题描述】:
我有一个包含任意数量的"\n" 的字符串。我需要知道字符串中是否有与某个模式不匹配的行。如果所有行都与模式匹配,则返回应为true。如果不是,返回应该是false。模式是:单词、冒号和数字 (/[\w]+\:[\d]+/)。代码应该是 ruby 格式的。
这些示例由用户在网页的文本区域框中输入。 输入内容的例子有:
一个有效的例子(所有行都有效):
something:1
other:2
more:3
无效示例(第 2,3,4 行无效 -> 只有第 1、5 行有效):
something:1
other:stuff
invalid
)/&invalid again
valid_again:4
这些示例在代码中作为单个字符串接收,行由\n 分隔(来自有效示例):
valid_example_string = "something:1\nother:2\nmore:3"
有没有简单的正则表达式方法来做到这一点?我不是在寻找如何遍历线条。我正在寻找一种简写正则表达式方式(如果可能的话)来匹配示例,在(伪代码)的行中:
valid_example_string.test(/the_needed_regex/) # => true
invalid_example_string.test(/the_needed_regex/) # => false
最简单/优雅/高效的方法是什么?
【问题讨论】:
-
something:1有效还是无效? -
我不明白...您的字符串是否包含换行符
\n或转义换行符\\n?如果您执行.inspect,它将如何打印? -
您只需要检查格式还是正在处理/转换字符串?
-
更新了示例。 user3218114:有效。 arco444:再次添加示例,由于某种原因,用户“sawa”移动了它... Stefan:我想检查格式 -> 用户输入必须与正则表达式匹配
-
致编辑问题并删除一半问题的用户“sawa”:如果您想清理它,那很好。只是不要删除说明情况的示例,就像 arco444 所问的那样......
标签: ruby regex string match multiline