Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于匹配行数和每行字符数的正则表达式_Java_Javascript_Regex - Fatal编程技术网

Java 用于匹配行数和每行字符数的正则表达式

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个字符”

我试图确保一个字符串包含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}(?:(?:\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端失败。