1

我需要使用正则表达式来解析字符串。

大多数情况下,可以使用表达式解析字符串

^([a-zA-Z\-\,0-9\(\)\#\/ \.]{1,21})(.{0,9})(.{0,9})(.{0,9})(.{0,9})(.{0,9})(.{0,9})

有时,字符串需要包含额外的 4 个字符,因此表达式为

^([a-zA-Z\-\,0-9\(\)\#\/ \.]{1,25})(.{0,9})(.{0,9})(.{0,9})(.{0,9})(.{0,9})(.{0,9})

任何一个表达式本身都可以在它们各自的字符串上工作。第一个在技术上对用于第二个表达式的字符串也是有效的,但是表达式的 .{0,9} 部分将偏移 4 个字符。

表达式的快速解释:
子集 1:1 - 21(或 25 个字符)
任何字符 az
任何字符 AZ
破折号,逗号
任何数字 0-9
左括号和右括号、井号标签、正斜杠、空格和句点。

子集 2-7
任何字符(最多 9 个)

我希望得到类似下面的表达式

^([a-zA-Z\-\,0-9\(\)\#\/ \.]{1,21|25})(.{0,9})(.{0,9})(.{0,9})(.{0,9})(.{0,9})(.{0,9})

或者

^([a-zA-Z\-\,0-9\(\)\#\/ \.]{1,21}|{1,25})(.{0,9})(.{0,9})(.{0,9})(.{0,9})(.{0,9})(.{0,9})

我试过这些,但它们没有用。其他人有任何想法吗?

4

1 回答 1

1

它相当冗长,但我认为你必须这样做:

^([a-zA-Z\-\,0-9\(\)\#\/ \.]{1,21}|[a-zA-Z\-\,0-9\(\)\#\/ \.]{25})(.{0,9})(.{0,9})(.{0,9})(.{0,9})(.{0,9})(.{0,9})

第一个捕获组的长度必须为 1-21 个字符或 25 个字符。

如果您愿意更改捕获组的方式(并且如果您的正则表达式引擎支持它),您也可以这样做:

^([a-zA-Z\-\,0-9\(\)\#\/ \.]{1,21}|[a-zA-Z\-\,0-9\(\)\#\/ \.]{25})(.{0,9}){6}
于 2013-06-20T21:01:44.597 回答