Java 用于匹配行数和每行字符数的正则表达式
我试图确保一个字符串包含0到3行,并且对于给定的一行,它包含0到100个字符。它需要是JavaScript和Java的有效表达式。像很多做RegEx的人一样,我从互联网上的不同地点复制 反向工作我认为Java 用于匹配行数和每行字符数的正则表达式,java,javascript,regex,Java,Javascript,Regex,我试图确保一个字符串包含0到3行,并且对于给定的一行,它包含0到100个字符。它需要是JavaScript和Java的有效表达式。像很多做RegEx的人一样,我从互联网上的不同地点复制 反向工作我认为^.{0100}$会让我得到“行包含0到100个字符”,但尝试将其分组为(^.{0100}$){0,3}是行不通的 新行字符可能是我问题的一部分,因此我最终得到了类似于{0100}(?:\n.{0100}{0,2}的结果,试图说“一行0到100个字符,可选地后跟新行的0到2个实例和0到100个字符”
^.{0100}$
会让我得到“行包含0到100个字符”,但尝试将其分组为(^.{0100}$){0,3}
是行不通的
新行字符可能是我问题的一部分,因此我最终得到了类似于{0100}(?:\n.{0100}{0,2}
的结果,试图说“一行0到100个字符,可选地后跟新行的0到2个实例和0到100个字符”,但这也失败了
到目前为止,我从其他人那里得到了这些表达。使用一个在线测试工具,我终于把它组合在一起:^.{0100}(?:(?:\r\n |[\r\n])。{0100}{0,2}$
,这似乎是可行的
所以,我的问题是,考虑到我所追求的,我是否遗漏了
^.{0100}(?:(?:\r\n |[\r\n]).{0100}.{0,2}$
中的任何陷阱?此外,即使这样做有效,这是最好的表达方式吗?我认为你所拥有的会很好。如果需要,可以使换行部分更紧凑,如果使用的是matches()
,则不需要^
和$
:
String regex = ".{0,100}(?:[\r\n]+.{0,100}){0,2}";
编辑
经过更多的思考,我意识到上面的换行建议将匹配4行(或更多)只要其中两行是空的。那么,我们回到您建议的示例。哦,至少可以省略开头和结尾字符
String regex = ".{0,100}(?:(?:\r\n|[\r\n]).{0,100}){0,2}";
我对正则表达式不是很在行,但这行吗
^.{0,100}\n?(.{0,100}\n)?.{0,100}?$
同样,我还是reg exp新手,因此如果出现错误(很可能),请告诉我。我认为如果存在字符,则需要换行符?只是意味着它看起来像是可选字符串的一部分,而不是可选字符串的一部分。因此,没有新行的单行将错误地导致匹配失败。此外,我认为
\n
将在JS中工作,但不会在java中工作。至少在添加\r
支持之前,我认为我遇到了java问题。谢谢你留下来。我真的很感谢你的努力!固定的。啊,我在胡闹。我同意你的观点,我可以放弃它们,但我的警告是,我只能配置一个字符串。然后,我使用的sdk将在这两个地方使用相同的模式生成JS和java代码。我很确定,当我移除锚的时候,它开始在JS端失败。