0

私は自分の会社の新しい価格表に取り組んでおり、4%の値上げですべての価格を変更する必要があります。RegExで動作するInDesign(Number Adjuster)のスクリプトを使用しています。本文には2つの形式の数字があります:1.200 430(\d。\d {3})を使用して最初の数字を正常に変更し、1.04を掛けました。問題は、3桁を(\ d {3})で変更すると、前の桁も変更されますが、ドットの後の部分のみが変更されることです。3桁のものと一致する正規表現が必要ですが、ではありません** 1つ、または両方に一致するもの。スクリプトですべての価格を一度に再計算できます。また、記事番号は45.62.54で、2桁の価格を変更する必要があるため、この種の文字列または前後にドットが付いた2桁の番号を除外する必要があります。私はプログラマーではないので、正規表現システムを理解するのに苦労しています。

4

1 に答える 1

0

この正規表現:

\b\d*\.?\d+\b

// \b\d*\.?\d+\b
// 
// Assert position at a word boundary «\b»
// Match a single digit 0..9 «\d*»
//    Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
// Match the character “.” literally «\.?»
//    Between zero and one times, as many times as possible, giving back as needed (greedy) «?»
// Match a single digit 0..9 «\d+»
//    Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
// Assert position at a word boundary «\b»

オプションの整数部分を持つ整数または浮動小数点数に一致します。

また、最初のソリューションの場合:

(?<!\.)\d{3}

// (?<!\.)\d{3}
// 
// Assert that it is impossible to match the regex below with the match ending at this position (negative lookbehind) «(?<!\.)»
//    Match the character “.” literally «\.»
// Match a single digit 0..9 «\d{3}»
//    Exactly 3 times «{3}»

これは、 が前に付いていない 3 桁の数字に一致し.ます。

この正規表現:

\b\d*(?:\.\d+)?\b\s+

番号のみに一致する必要があります。番号が少なくとも 1 つのスペースで区切られていることが想定されているため、商品番号 53.44.55 は有効な番号ではないため除外されます。他に制約がある場合はお知らせください。

于 2011-10-18T09:59:20.617 に答える