最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一篇文章帶你了解Python和Java的正則表達(dá)式對(duì)比

 更新時(shí)間:2021年09月14日 15:14:16   作者:8su  
正則表達(dá)式有元字符及不同組合來構(gòu)成,通過巧妙的構(gòu)造正則表達(dá)式可以匹配任意字符串,并完成復(fù)雜的字符串處理任務(wù),希望本片文章能給你帶來幫助

參考資料:

  1. 正則表達(dá)式語法–菜鳥教程
  2. Java正則表達(dá)式實(shí)現(xiàn)

簡(jiǎn)單批量替換

舉例:將and 批量替換為&&

Python實(shí)現(xiàn)

import re
def transformSimple(fromRegex, toText, inText):
    return re.sub(fromRegex, toText,inText, flags =re.I)
if __name__ == "__main__":
    inText = "x =1 and y =2"
    fromRegex = " and "
    toText = " && "
    outText = transformSimple(fromRegex,toText,inText )
    print(outText)
	## OUTPUT: x =1 && y =2

Java實(shí)現(xiàn)

import java.util.*;
import java.util.regex.*;
public class RegexTest {
	private static String transformSimple(String regexPattern, String replText, String inText){
        return Pattern.compile(regexPattern, Pattern.CASE_INSENSITIVE).matcher(inText).replaceAll(replText);
    }
    public static void main(String[] args) {
	    String input = "x =1 and y =2";
        String patternString =" and ";
        String toText = " && ";
        String outText ="";
        outText = transformSimple(patternString, toText, input);
        System.out.println("RESULT: " + outText);
}

// RESULT: x =1 && y =2

復(fù)雜模板替換

舉例:將x in (1,2)批量替換為[1,2].contains(x)

分析: 模板化

  • 輸入分組捕獲 (\S+)\s+in\s*\((.+?)\)
  • 輸出分組填寫 [@2].contains(@1) – @1和@2分別對(duì)應(yīng)分組捕獲中的第1組和2組。

Python實(shí)現(xiàn)

import re
def transformComplex(fromRegex, toText, inText):
    regObj = re.compile(fromRegex, flags =re.I)
    for match in regObj.finditer(inText):
        index = 1
        outText = toText
        for group in match.groups():
            outText = outText.replace("@"+str(index), group)
            index +=1
        inText = inText.replace(match.group(0), outText)
    return inText
if __name__ == "__main__":
    fromRegex = "(\S+)\s+in\s*\((.+?)\)"
    toText = "[@2].contains(@1)"
    inText = "x in (1,2) and y in (3,4)"
    outText22 = transformComplex(fromRegex, toText, inText)
    print(outText22)
    ## OUTPUT: [1,2].contains(x) and [3,4].contains(y)

Java實(shí)現(xiàn)

import java.util.*;
import java.util.regex.*;
public class RegexTest {
	private static String transformComplex(String regexPattern, String replText, String inText){
        Pattern pattern = Pattern.compile(regexPattern, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(inText);
        String outText ="";
        while (matcher.find()){
            outText =  replText;
            for (int i =1; i <= matcher.groupCount(); i++){
                outText = outText.replace("@"+i, matcher.group(i));
            }
            inText = inText.replace(matcher.group(0), outText);
        }
        return inText;
    }
    public static void main(String[] args) {
        String input = "x in (1,2) and y in (3,4)";
        String patternString ="(\\S+)\\s+in\\s*\\((.+?)\\)";
        String toText = "[@2].contains(@1)";
        String outText ="";
        outText = transformComplex(patternString, toText, input);
        System.out.println("RESULT: " + outText);
    }
}
// RESULT: [1,2].contains(x) and [3,4].contains(y)

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • python 密碼加密與解密的實(shí)現(xiàn)

    python 密碼加密與解密的實(shí)現(xiàn)

    本文主要介紹了python 密碼加密與解密的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 分享Pycharm中一些不為人知的技巧

    分享Pycharm中一些不為人知的技巧

    工欲善其事必先利其器,Pycharm 是最受歡迎的Python開發(fā)工具,它提供的功能非常強(qiáng)大,是構(gòu)建大型項(xiàng)目的理想工具之一,如果能挖掘出里面實(shí)用技巧,能帶來事半功倍的效果
    2018-04-04
  • Python處理CSV與List的轉(zhuǎn)換方法

    Python處理CSV與List的轉(zhuǎn)換方法

    下面小編就為大家分享一篇Python處理CSV與List的轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Windows上配置Emacs來開發(fā)Python及用Python擴(kuò)展Emacs

    Windows上配置Emacs來開發(fā)Python及用Python擴(kuò)展Emacs

    這篇文章主要介紹了Windows上配置Emacs來開發(fā)Python及用Python擴(kuò)展Emacs的方法,Emacs與Vim并稱為開發(fā)者手中最強(qiáng)大的兩款文本編輯器,需要的朋友可以參考下
    2015-11-11
  • python 實(shí)現(xiàn)快速生成連續(xù)、隨機(jī)字母列表

    python 實(shí)現(xiàn)快速生成連續(xù)、隨機(jī)字母列表

    今天小編就為大家分享一篇python 實(shí)現(xiàn)快速生成連續(xù)、隨機(jī)字母列表,具有很好的價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python模塊中pip命令的基本使用

    python模塊中pip命令的基本使用

    這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)python實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的示例解析,在同樣在進(jìn)行python機(jī)器學(xué)習(xí)的同學(xué)可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • python二分法查找算法實(shí)現(xiàn)方法【遞歸與非遞歸】

    python二分法查找算法實(shí)現(xiàn)方法【遞歸與非遞歸】

    這篇文章主要介紹了python二分法查找算法實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Python使用遞歸與非遞歸算法實(shí)現(xiàn)二分查找的相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12
  • Python并發(fā)編程線程消息通信機(jī)制詳解

    Python并發(fā)編程線程消息通信機(jī)制詳解

    這篇文章主要為大家介紹了Python并發(fā)編程之線程消息通信機(jī)制的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • 幫你快速上手Jenkins并實(shí)現(xiàn)自動(dòng)化部署

    幫你快速上手Jenkins并實(shí)現(xiàn)自動(dòng)化部署

    在未學(xué)習(xí)Jenkins之前,只是對(duì)Jenkins有一個(gè)比較模糊的理解,即Jenkins是一個(gè)自動(dòng)化構(gòu)建項(xiàng)目發(fā)布的工具,可以實(shí)現(xiàn)代碼->github或者gitlab庫->jenkins自動(dòng)部署->訪問的整體的過程,而無需人為重新打包,今天就帶大家詳細(xì)了解一下,幫你快速上手Jenkins,需要的朋友可以參考下
    2021-06-06
  • PyCharm安裝Markdown插件的兩種方法

    PyCharm安裝Markdown插件的兩種方法

    Markdown是一種可以使用普通文本編輯器編寫的標(biāo)記語言,通過簡(jiǎn)單的標(biāo)記語法,它可以使普通文本內(nèi)容具有一定的格式。這篇文章主要介紹了PyCharm安裝Markdown插件的兩種方法,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

三台县| 澳门| 台前县| 岚皋县| 柳州市| 九龙坡区| 安宁市| 汉寿县| 屏山县| 廊坊市| 墨江| 资源县| 太仆寺旗| 喜德县| 天长市| 都昌县| 淮北市| 盐城市| 肥乡县| 奉贤区| 封开县| 秭归县| 宜兰县| 肥城市| 灌云县| 南宫市| 华安县| 温泉县| 佛山市| 漳浦县| 陆川县| 孝感市| 藁城市| 海林市| 安泽县| 灵台县| 桃园市| 习水县| 河源市| 南汇区| 东城区|