Regex 如何使用perl搜索公式并更改字符串部分

Regex 如何使用perl搜索公式并更改字符串部分,regex,perl,Regex,Perl,嗨,我想从公式中提取子字符串,稍后对其进行一些更改,并将其放回如下位置: ((dfhkuyhu.hkjgd.hjkh + hgdfjg.uyrepo.uyu + hgdfjg.uyrepo.uyu)/(hgdfjg.uyrepo.uyu))*((khuh.jbmxcn.bnb + hgdfjg.uyrepo.uyu)/(jhxzku.kjkj.jh + hgdfjg.uyrepo.uyu)) 我想在每个部分的开头和结尾添加如下内容: ((Foo!dfhkuyhu.hkjgd.hjkh![hg]

嗨,我想从公式中提取子字符串,稍后对其进行一些更改,并将其放回如下位置:

((dfhkuyhu.hkjgd.hjkh + hgdfjg.uyrepo.uyu + hgdfjg.uyrepo.uyu)/(hgdfjg.uyrepo.uyu))*((khuh.jbmxcn.bnb + hgdfjg.uyrepo.uyu)/(jhxzku.kjkj.jh + hgdfjg.uyrepo.uyu))
我想在每个部分的开头和结尾添加如下内容:

((Foo!dfhkuyhu.hkjgd.hjkh![hg] + Foo!hgdfjg.uyrepo.uyu![hg] + Foo!hgdfjg.uyrepo.uyu![hg]).[boo]/(Foo!hgdfjg.uyrepo.uyu![hg]).[boo])*((Foo!khuh.jbmxcn.bnb![hg] + Foo!hgdfjg.uyrepo.uyu![hg]).[boo]/(Foo!jhxzku.kjkj.jh![hg] + Foo!hgdfjg.uyrepo.uyu![hg]).[boo])

有什么想法吗?

规则有点不清楚,但似乎你正试图用Foo围绕每一行字母数字字符加上分隔点![hg],并将每个右括号替换为[boo]。对吧?

然后你可以这样做:

$subject =~ s/[\w.]+/Foo!$&![hg]/g;
$subject =~ s/\)/).[boo]/g;
说明:

s/abc/def/表示用替换字符串def替换正则表达式abc匹配的任何内容,修改原始$subject变量

[\w.]+匹配像dfhkuyhu.hkjgd.hjkh这样的字符串。在替换字符串中,$&表示匹配的文本。/g标志告诉Perl查找并替换字符串中的所有匹配项


\匹配文字括号。

为了有机会提供答案,更不用说方法,请发布实际公式。那么区别是什么?这是一些字符集,中间有点,公式的结构和我写的完全一样,现在我用“/”和“*”和“+”拆分,然后存储,然后删除括号,然后我将替换它们,搜索字符串并再次替换,但我仍在努力,我需要一些想法来解决它。我认为正则表达式背后的整个想法是匹配模式没有精确的公式,对吗?公式可以更改,但模式是相同的!!谢谢你,我做的很好,有很多环,很头痛Thanks@AshkanAbdnkhn:很高兴听你这么说-看来我猜对了。为了在将来进一步提高您的StackOverflow体验,请花几分钟阅读Jon Skeet的优秀初级读物。欢迎来到社区!谢谢,这是我的第一个问题,将来会这样做,你能告诉我如何在字符串的末尾添加相同的后缀,因为在结尾没有*来检查它,我在其中更改了你的代码$input=~s/*/[boo]*/g$输入=~s/\/.[boo]\//g;错过了字符串末尾的最后一个