【发布时间】:2014-10-30 14:39:25
【问题描述】:
我正在尝试编写一个与这种格式的字符串匹配的 Java 正则表达式:
AXXXXYYYYB
其中 XXXX 是一个在第 20 个字符或 second 空格处终止的字符串,以先到者为准,而 YYYY 是一个字符串在第 20 个字符或 first 空格处终止,以先到者为准。
我需要 XXXX 和 YYYY 作为第一和第二个捕获组。
我可以让它在 XXXX 中的 first 空间终止工作:
^A([^ ]{1,20}) ?([^ ]{1,20})B$
但我不知道终止于第 20 个字符或 second 空格的规则。
另外,我不在乎任何一个捕获组是否以额外的前导或尾随空格结束。
示例输入 -> 输出:
MR SMITH BROOKLYN -> "MR SMITH" and "BROOKLYN" (separated at second space)
MR SMYTHE-JONES BRONX -> "MR SMYTHE-JONES" and "BRONX" (separated at second space)
12345678901234567890QUEENS -> "12345678901234567890" and "QUEENS" (separated at 20th character)
1234567890 1234567890QUEENS -> "1234567890 123456789" and "0QUEENS" (separated at 20th character)
1234567890 1234567890STATEN ISLAND -> "1234567890 123456789" and "0STATEN" (separated at 20th character, then separated at space)
【问题讨论】:
-
你能提供一些预期输出的例子吗?
-
是的,我一点击保存就注意到了它,并在您发布澄清请求时修复了它。对不起!
-
只有 1 个空格和少于 20 个字符的字符串会怎样?
-
第一个字符串以第二个空格或第 20 个字符结束,以先到者为准。从那时起,第二个字符串在第 20 个字符或第一个空格处结束。如果没有足够的字符,那么什么都不会匹配。 “A B”将匹配为“A B”和“”。