-5

まず、[0-9]* が 23 文字の前に発生する場合は、文字列から 23 文字を取得し、[0-9]* を単語全体として含めます。文字列があるとします:

x = I have a car with tha id 6356

I have tried with x[:23]

ただし、最初の 23 文字を取得するために使用されます。これは、次の状況では失敗します。

x = I have a car with id [0-9]*[\s]
x1 = color id [0-9]* with [0-9]*[\s]
x2 = id [0-9]*[\s] with [0-9]*[\s] has index no:[0-9]*[\s]
x3 = id[\s] with[\s] model[\s] has index no[\s][0-9]*

output of x:  I have a car with id [0
output of x1: color id [0-9]* with [0
output of x2: id [0-9]* with [0-
output of x3: id[\s] with[\s] model[\

期待される出力:

x: I have a car with id [0-9]*[\s]
x1: color id [0-9]* with [0-9]*[\s]
x2: color id [0-9]* with [0-9]*[\s]
x3: id[\s] with[\s] model[\s]
4

2 に答える 2

1

その部分文字列がそこにあるかどうかを確認してください。positionそうであれば、その部分文字列を過ぎるまで上にシフトします。

x = 'color id [0-9]* with [0-9]*[\s]'
substring = '[0-9]*'
position = 23

length = len(substring)
index = x.find(substring, position - length)

if position - length < index < position + length - 1:
    position = index + length

print x[:position]
于 2012-12-21T07:47:29.680 に答える
0

この正規表現はトリックを行うようです:

^.{23}\d*

この結果は次のようになります。

'この長い紐は切り落とされます。' の結果は 'この長い文字列は cho ' になります。
'私の電話番号は 061234567891 です。'私の電話番号は 061234567891です。

マッチの最初のグループを読むと、文字列が得られます。

m = re.match(r"^.{23}\d*", x)
result = m.group(0)
于 2012-12-21T11:56:28.177 に答える