求助一个正则表达式. - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
zyb201314
V2EX    Javascript

求助一个正则表达式.

  •  
  •   zyb201314 2024-04-17 11:01:03 +08:00 via Android 2333 次点击
    这是一个创建于 541 天前的主题,其中的信息可能已经有所发展或是发生改变。
    字符串: 'txt=123,txt=kg66vv,hhj,txt=6966,ggg'
    需要获取包含"6"的字段结果即:['kg66vv','6966'] 这样一个表达式.
    13 条回复    2024-04-17 12:25:49 +08:00
    newaccount
        1
    newaccount  
       2024-04-17 11:06:26 +08:00   1
    'txt=123,txt=kg66vv,hhj,txt=6966,ggg'.split(/[^a-z0-9]/i).filter(item => item.indexOf('6') !== -1)

    你就说用没用到正则吧
    Dockerfile
        2
    Dockerfile  
       2024-04-17 11:08:24 +08:00
    [a-z0-9]*6[a-z0-9]* 这样?
    wangtian2020
        3
    wangtian2020  
       2024-04-17 11:09:26 +08:00
    ```
    let str = `txt=123,txt=kg66vv,hhj,txt=6966,ggg`
    console.log(str.split(',').filter(v=>v.includes(`txt=`)).map(v=>v.substring(4)).filter(v=>v.includes(6)));
    ```
    正则?什么正则,懒得问 chatgpt 要正则写法了,Javascript 直接梭
    857681664
        4
    857681664  
       2024-04-17 11:11:57 +08:00
    (?<=txt=)[a-zA-Z0-9]+[6]+[a-zA-Z0-9]+(?=,)
    jgh004
        5
    jgh004  
       2024-04-17 11:12:10 +08:00
    直接扔给 ai
    DpN8Qok9Zcc1dcRZ
        6
    DpN8Qok9Zcc1dcRZ  
       2024-04-17 11:12:26 +08:00
    import re

    # 定义要匹配的字符串
    text = 'txt=123,txt=kg66vv,hhj,txt=6966,ggg'

    # 使用正则表达式匹配包含"6"的字段
    matches = re.findall(r'txt=([^,]*6[^,]*)', text)

    print(matches)
    然后再给你两个地址
    https://chat.openai.com/? GPT
    https://kimi.moonshot.cn/chat/coev3cg3r07df52qskn0 国内 kimi 你用这两个问,基本能解决 90%问题
    57ing
        7
    57ing  
       2024-04-17 11:15:45 +08:00   1
    这种问题交给 gpt 来帮忙提效是最合适的:
    在 Javascript 中,你可以使用正则表达式与`match`方法来达到类似的效果。这里是如何用 Javascript 实现这一功能的例子:

    ```Javascript
    const text = 'txt=123,txt=kg66vv,hhj,txt=6966,ggg';
    const pattern = /txt=([^,]*6[^,]*)/g;

    const matches = text.match(pattern);
    const results = matches ? matches.map(item => item.split('=')[1]) : [];
    console.log(results);
    ```

    这段代码的工作方式如下:
    - `/txt=([^,]*6[^,]*)/g`:这是正则表达式,其与上述 Python 例子中的功能相同,但使用了全局搜索标志`g`,以便找到所有匹配项。
    - `text.match(pattern)`:这将返回所有匹配的项,例如`['txt=kg66vv', 'txt=6966']`。
    - `item.split('=')[1]`:将每个匹配的字符串分割,并取等号后面的部分,这样就只剩下所需的字段值了。
    - `results`:这将存储最终提取的结果,如`['kg66vv', '6966']`。

    如果你的字符串结构有所不同,或者有其他特定的需求,可能需要调整正则表达式或处理逻辑。
    ZeekChatCom
        8
    ZeekChatCom  
       2024-04-17 11:16:46 +08:00   1
    /[^=,]*6[^=,]*/gi
    jurassic2long
        9
    jurassic2long  
       2024-04-17 11:17:35 +08:00
    当你有一个问题,决定用正则解决时,你有两个问题了。

    如果 op 为了练习正则,那么自己动手多试试吧,如果是为了解决这个问题,那真不如 split 加 is in 判断
    wxf666
        10
    wxf666  
       2024-04-17 11:20:29 +08:00
    ```js
    s = 'txt=123,txt=kg66vv,hhj,txt=6966,ggg'
    s.match(/(?<=(?:^|,)[^=]+=)([^,]*6[^,]*)(?=,|$)/g)
    ```
    QUC062IzY3M1Y6dg
        11
    QUC062IzY3M1Y6dg  
       2024-04-17 11:20:58 +08:00   1
    /\btxt=(\w*6\w*)\b/g
    dbak
        12
    dbak  
       2024-04-17 12:00:00 +08:00
    echo 'txt=123,txt=kg66vv,hhj,txt=6966,ggg'|grep -oP '=.+?,'|awk -F'=|,' '$2~/6/{print $2}'|xargs -r -i echo -en \'{}\',|sed -r 's/^/[/;s/,$/]\n/'
    zyb201314
        13
    zyb201314  
    OP
       2024-04-17 12:25:49 +08:00 via Android
    这种问题解决的方式或许有很多, 一为的学习, 2 为了解决问题, 直觉用正则解解决这种问题应该最简洁, 也是它的能力范围,但我想到的处理方式太过复杂,不是我想要的.
    感谢 @ramirezyolis808 的/[^=,]*6[^,]*/g,感谢各位大佬, 此贴就此终结.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6015 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 02:34 PVG 10:34 LAX 19:34 JFK 22:34
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86