-1

我需要使用单个替换正则表达式和 5 个捕获组替换西班牙字母表的 5 个元音中的所有重音。

在我的文本中,我有 áéíóúàèìòù 等等。直到现在我有这个正则表达式:

s/(=?[àáÀÁ])|(=?[èéÈÉ])|(=?[ìíÌÍ])|(=?[òóÒÓ])|(=?[ùúÙÚ])/$1$2$3$4$5/g

但是这个正则表达式在每个组上给了我相同的结果。

有没有办法在每个不同的组中获得不同的价值?像这样:

group1 ($1)-> A

group2 ($2) -> E

group3 ($3) -> 我

组 3 ($4) -> O

group3 ($5) -> U

我知道如何使用 5 种不同的正则表达式来做到这一点,但我只需要一个。有什么想法吗?

非常感谢!!

4

1 回答 1

0

我不知道用一个普通的正则表达式来做到这一点(尽管我很想被证明是错误的。)

sed对这种情况有一个专用的命令y/音译:

sed -e 'y/àáÀÁèéÈÉìíÌÍòóÒÓùúÙÚ/aaAAeeEEiiIIooOOuuUU/'

但是,它不会帮助您=从要音译的字符前面删除前导。你可以组合两个 sed 命令吗?例如。

sed -e '{ y/àáÀÁèéÈÉìíÌÍòóÒÓùúÙÚ/AAAAEEEEIIIIOOOOUUUU/; s/=\([AEIOU]\)/\1/g; }'
于 2018-05-24T16:03:07.923 回答