我需要使用正则表达式来解析字符串。
大多数情况下,可以使用表达式
解析字符串^([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个字符关闭。
A quick explanation of the expression: Subset 1: 1 - 21 (or 25 characters) any characters a-z any characters A-Z the dash, the comma any digits 0-9 the open and close parenthesis, the hash tag, forward slash, space and period. Subsets 2-7 Any characters (up to 9 total)
我希望得到类似下面的表达式
^([a-zA-Z\-\,0-9\(\)\#\/ \.]{1,21|25})(.{0,9})(.{0,9})(.{0,9})(.{0,9})(.{0,9})(.{0,9})
OR
^([a-zA-Z\-\,0-9\(\)\#\/ \.]{1,21}|{1,25})(.{0,9})(.{0,9})(.{0,9})(.{0,9})(.{0,9})(.{0,9})
我试过这些并且它们没有用。其他人有什么想法吗?
答案 0 :(得分: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}