如何检查字符串中的字符重复?

时间:2013-08-16 06:37:21

标签: regex regex-negation regex-lookarounds regex-greedy

嗨,大家好我是正则表达式的新手,我正在尝试为字符串值的模式创建表达式规则如下

1) String must start with the 'O' or 'T'
2) After that there must be 9 digits 
3) After that there must be 'T'
4) After that alphanumeric string with specs and numbers and character'D' these can repeat any number of time in string of length 25 
5) Then character 'O'
6) Then string with numbers and spaces of length 5  

然而,我完成了所有条件,但条件 4 我不知道该怎么做,因为它可以在长度为25的给定字符串中重复'D'任意次。现在写,我已经在字符串中出现的每个地方都调整了可选的'D',这是一种非常冗长的正则表达式,所以我希望有人会帮助我条件 4 。任何帮助都将是大。

要匹配的字符串 - >

T011600062TO51D45D0399D0O 1807

最新的正则表达式 - >

(?x)((?:[OT]\d{9})(?:T\s*\d*\s*[0-9DO ]\d*\s*[OD0-9 ]\s*\d*[D0-9]\s*\d*[0-9OD ]\d*)(?:[O]\s*\d*)\b)

我对正则表达式的这一部分感到困惑

(?:T\s*\d*\s*[0-9DO ]\d*\s*[OD0-9 ]\s*\d*[D0-9]\s*\d*[0-9OD ]\d*)

这是正确的方法吗?

3 个答案:

答案 0 :(得分:0)

条件4不明确。

(O|T)\d{9}T[D\d]{25}O[\d ]{5}

答案 1 :(得分:0)

也许是D {0,25}。这意味着D重复0~25次。

答案 2 :(得分:0)

您可以尝试使用所有匹配模式

(O|T)\d{9}T[DO \d]{0,25}O[\d ]{5}