regex 正则表达式条目序列号[已关闭]

nlejzf6q  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(101)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

昨天关门了。
Improve this question
有没有可能为正则表达式中的每个匹配词位获取一个序列号?实际上,我需要通过用唯一值替换每个匹配条目来“混淆”一些结构化数据,比如从
约翰·保罗...

姓名1****姓名2..

有没有可能用反向引用或其他方法?
我需要一个与语言无关的解决方案,实际上可以在任何文本编辑器(例如sed)中工作。名称列表实际上不限于给定的两个甚至四个,它事先是不知道的

mm9b1k5b

mm9b1k5b1#

你没有指定你正在使用的语言。根据语言支持的正则表达式工具,它可能是可行的。例如,在Python中,它可以通过以下方式完成:

import re

text = 'John Paul ...'

def do_replacement(m):
    global match_number

    match_number += 1
    return f'Name{match_number}'

# Reset match_number:
match_number = 0

# As an example, match text on a word boundary starting with a
# a capital (English) letter followed by zero or more lower-case letters:
new_text = re.sub(r'\b[A-Z][a-z]*\b', do_replacement, text)
print(new_text)

图纸:

Name1 Name2 ...

在PHP中:

<?php
$text = "John Paul ...";

$match_number = 0;

$new_text = preg_replace_callback(
    '/\b[A-Z][a-z]*\b/',
    function ($matches) {
        global $match_number;
        $match_number += 1;
        return "Name$match_number";
    },
    $text
);

echo $new_text;

相关问题