كيف يمكنني استبدال مطابقة التعبير العادي ورسم خريطة للبدائل في بيرل؟
-
05-07-2019 - |
سؤال
وأي بمعنى:.
echo H#97llo | MagicPerlCommand
والمعياري:
Hallo
وكانت MagicPerlCommand هو شيء من هذا القبيل
perl -pnle "s/#(\d+)/chr(\1)/ge"
(ولكن هذا لا يعمل).
المحلول
تغيير \1
إلى $1
في MagicPerlCommand الخاص بك. النمط \digit
backreference لا ر العمل عندما يتم تقييم التعبير البديل (أي s///e
).
والتي عملت بالنسبة لي على ويندوز ولينكس.
نصائح أخرى
j_random_hacker
الجواب، يجب عليك استخدام $1
بدلا من \1
.
وهذا هو لاستخدام "/e
" التعديل إلى التعبير المعتاد يعني الحق في نصف اليد هو مجرد بيرل تعبير آخر عادي، وليس إجراء تبديل رجإكس. لأنه بيرل، كنت قد حصلت على استخدام بناء جملة بيرل للمرجعية قوس، وليس بناء الجملة رجإكس المعتاد.
لا تنتمي إلى StackOverflow