regex 仅在数字第一次出现在序列中时替换它

o3imoua4  于 2023-05-30  发布在  其他
关注(0)|答案(3)|浏览(121)

我有一个数字序列4191159999,我想用regex只替换88中第一个出现的9数字(结果是41881159999)。
我尝试了(O9;"(9.+?)";"8"),但结果是4181588,也尝试了(O9;"^\d{2}9+";"8"),但它删除了前两个数字,结果是81159999,我不能使用负前瞻与bigquery或谷歌工作表...

mbyulnm0

mbyulnm01#

只需替换:

^        # Match at the start of the string
([^9]*)  # a capturing group of 0 or more non-'9' characters,
9        # then a literal '9'.

...与:

$188

其中$1是我们捕获的非9序列,88表示文字88
试试on regex101
试试看:

console.config({ maximize: true });

const regex = /^([^9]*)9/;
const text = '4191159999';

console.log(text.replace(regex, '$188'));
<script src="https://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
pbwdgjma

pbwdgjma2#

例如,在GoogleSheets中,您可以使用([0-8]*)开始捕获组1中的可选数字0-8
然后匹配一个单9,并在替换中使用组1后接88

^([0-8]*)9

请参见regex demo
示例:

=REGEXREPLACE(TO_TEXT(A1), "^([0-8]*)9", "$188")

aemubtdh

aemubtdh3#

console.log('4191159999'.replace(/9/, 88));

相关问题