我有以下正则表达式,它没有像我想象的那样工作。
youtube-dl -o 'test2.%(ext)s' --extract-audio --audio-format mp3 --no-check-certificate https://www.youtube.com/watch?v=BaW_jenozKc
我正在尝试匹配一个以2或4位开头的字符串,后跟一个句点,后跟2位数字,然后是另一个句点和2或4位数字。
我希望33.44.4444可以工作,33.33可以工作,但是只要我有一个第二个句号的字符串,我的表达式就会失败。
我做错了什么?
答案 0 :(得分:1)
你的正则表达式对于你想要做的事情是正确的,除了{2-4}部分,如果你使用{2,4}它将用于你正在寻找的2到4个字符捕获。
("^\\d{2}(?:\\d{2})?\\.\\d{2}(\\.\\d{2,4})?$");
希望它有所帮助。
答案 1 :(得分:1)
正如其他人指出的那样,语法{2-4}是不正确的。使用{2,4}指定出现的范围。但是如果你只想要2或4(不是3),我会使用这个正则表达式:
@"^(\d{2}|\d{4})\.\d{2}(\.(\d{2}|\d{4}))?$"
答案 2 :(得分:0)
答案 3 :(得分:0)
你表达的方式"两个或四个数字"在你的表达的第一部分是正确的:
\\d{2}(?:\\d{2})?
第二部分做错了:
(\\.\\d{2-4})?
将第一部分复制到第二部分以解决问题:
("^\\d{2}(?:\\d{2})?\\.\\d{2}(\\.\\d{2}(?:\\d{2})?)?$");