火山软件开发平台

标题: 通过正则如何将满足条件的字母进行替换? [打印本页]

作者: nurjay    时间: 2022-9-6 02:24
标题: 通过正则如何将满足条件的字母进行替换?
手里有这样一个俄语名录,现在要通过正则如何将满足条件的字母进行替换
要求是 文字里只要有字母【эк】 就将该字符串中的 【ө】字母替换成【о】 、【й】字母替换成 【и】、【ә】字母替换成【а】、【і 】字母换成【ы】

эконөмйәліқ эконөмйст эконөмйст-сарапшы эконөмйсцімәқ эконөмйст-ғалым эконөмйкә эконөмйкәлі эконөмйкәліқ эконөмйкәліқ-тұрмыстық эконөмйкәліқ-технйкәліқ эконөмйкәліқ-саяси эконөмйкәліқ-қаржылық

сйнэколөгя
сйнэколөгйәліқ
геөэконөмйкә
геөэконөмйкәліқ
әутэколөгя


我要的是正则替换方式,谢谢!!!
正则!!

作者: 创世魂    时间: 2022-9-6 08:23
资料少,找了半天没找到怎么替换,,,

表达式到知道怎么写。。  й|я  用| 分割就可以匹配到多个。。但是替换公式不知道怎么写。
作者: BYWMnn9QFz59L6    时间: 2022-9-6 10:05
效果是出来了,但估计和你想象中代码的不太一样,但是封装一下应该还是可以用的

整体思路是分割名单得出每个名字
名字中查找【эк】,找到之后对该名字进行一系列的字符替换,否则就不替换,每次处理后或者不符合条件的名字都按照原顺序放好,最终就算是替换完成了
方法中所有的匹配文本都是基于正则的,可以在中间加入正则的通配符,虽然流程有点长,但只要的关键参数封装一下就可以作为一个动态处理数据的子程序用,以后用的话只要传入对应的文本和正则表达式参数就行了



(, 下载次数: 17)
(, 下载次数: 13)
(, 下载次数: 13)



作者: BYWMnn9QFz59L6    时间: 2022-9-6 10:30
如果希望程序只接受一段文字就能替换的话可以自己写一套自定义的文本替换规则,使用自己封装的方法进行解析出对应的数据
比如说你帖中的要求可以优化称以下字符串,这种情况下写一套字符串处理就可以把其中需要匹配和替换的关键字符串取出,后续就是方法套方法自动调用就行了
不过这种优化成字符串的形式虽然调用起来看着简洁,封装就麻烦一点了,还要考虑特殊情况,比方说下面的例子中的问号竖线和冒号其实可以换成偏门国家的语言字符这样可以防止和文本的内容重复

  1. эк?ө:о|й:и|ә:а|і:ы
复制代码

作者: nurjay    时间: 2022-9-6 13:10
谢谢,楼上的,我只是想要这个的正则表达式
作者: BYWMnn9QFz59L6    时间: 2022-9-10 12:15
研究了一下,是要这种效果吗?


  1. ((?=[^\w \r\n]*?эк)(ө)|(?<=эк[^ \r\n]*)(ө))
复制代码



(, 下载次数: 12)


作者: BYWMnn9QFz59L6    时间: 2022-9-10 12:18
楼主还有没有正则表达式的需求了,最近在下刚好在学正则表达式,对这类略复杂的题目很感兴趣,方便的话可以多发点吗?




欢迎光临 火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4