吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 957|回复: 20
收起左侧

[求助] 正则表达试 求助

[复制链接]
suohu88 发表于 2024-5-22 00:01
本帖最后由 suohu88 于 2024-5-22 14:39 编辑

小白一个  实在想不出来  在这里求大神

例如:192761
           -------ABVDDD
           英文form-data
           ["C"]


怎么匹配到固定数值 192761 跳过 2段英文后 取   ["里面英文大写"]         请不要用   | 因为替换的时候  会同步增加

还是原文出来才成   语言是 js

------WebKitFo
Content-Disposi

192761
------WebKitF
Content-Disp

["C"]
------WebKitF
Content-Dispo

5
------WebKit
Content-Disp

0
------WebKitFor

我只想匹配输出结果 是   192761   ["C"]                   [0-9]{6}|["A-D"]{3}   |用这个虽然能出来 但是替换就麻烦了

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zhqh 发表于 2024-5-22 22:33
// 输入的字符串
var inputString = '192761\n-------ABVDDD\n英文form-data\n["C"]\n192761\n------WebKitF\nContent-Disp\n["d"]';

// 定义正则表达式
var pattern = /192761\n[^]*?\n\["(\w+)"\]/g;

// 用匹配结果来生成输出
var match;
while ((match = pattern.exec(inputString)) !== null) {
    console.log("192761", '["' + match[1] + '"]');
}
zhqh 发表于 2024-5-22 07:40
// 输入的字符串
var inputString = '192761\n-------ABVDDD\n英文form-data\n["C"]';
var pattern = /192761(?:\n\S*){2}\n\["(\w+)"\]/;
var match = inputString.match(pattern);

if (match) {
    var result = match[1];  // 获取["里面英文大写"]
    console.log(result);
} else {
    console.log("未找到匹配的内容");
}
wapjsx 发表于 2024-5-22 08:15
我来用python语言实现楼主的功能,系采纳!哈哈~~~
[Python] 纯文本查看 复制代码
import re
s = '''
            例如:192761
           -------ABVDDD
           英文form-data
           ["C"]
           aasadfadsf
           192761
           -------ABVDDD
           英文form-data
           ["B"]
'''
myc = '.*192761.*\n.*\n.*\n.*?\[\"([A-Z]*)\"\]'
finda = re.findall(myc,s)
print(type(finda), finda)


输出的结果如下:
[Plain Text] 纯文本查看 复制代码
<class 'list'> ['C', 'B']
QQ橙子 发表于 2024-5-22 08:28
本帖最后由 QQ橙子 于 2024-5-22 08:29 编辑


输入字符串:
192761SHDUHEIKJasdqzCHUJK
输出:
find value: CHUJK

输入字符串:
61SHDUHEIKJasdqzCHUJK
输出:
No find.

#include <regex>
#include <iostream>
#include <string>
#include <windows.h>

std::string customSearch(const std::string& text, const std::string& pattern,char b) {

    size_t pos = text.find(pattern);
    if (pos == std::string::npos) {
        return "";
    }

    pos += pattern.length();

    while (pos < text.length() && !std::isupper(text[pos])) {
        pos++;
    }

    std::string result;
    while (pos < text.length()) {
        result += text[pos];
        pos++;
    }

    size_t c_pos = result.find(b);
    if (c_pos != std::string::npos) {
        return result.substr(c_pos);
    }
    else {
        return "";
    }
}

使用示例:

    std::string text = "192761SHDUHEIKJasdqzCHUJK";

 std::string extracted_value = customSearch(text, "192761",'C');

    if (!extracted_value.empty()) {
        std::cout << "find value: " << extracted_value << std::endl;
    }
    else {
        std::cout << "No find." << std::endl;
    }
小年轻在奋斗 发表于 2024-5-22 09:30
192761.+\[\"([A-Z]+)\"\]
[Java] 纯文本查看 复制代码
try {
	Pattern regex = Pattern.compile("192761.+\\[\\\"([A-Z]+)\\\"\\]", Pattern.DOTALL);
	Matcher regexMatcher = regex.matcher(subjectString);
	if (regexMatcher.find()) {
		// Successful match
	} else {
		// Match attempt failed
	} 
} catch (PatternSyntaxException ex) {
	// Syntax error in the regular expression
}

[Python] 纯文本查看 复制代码
reobj = re.compile(r"192761.+\[\"([A-Z]+)\"\]", re.DOTALL)
if reobj.search(subject):
	# Successful match
else:
	# Match attempt failed



Python匹配结果

Python匹配结果

Java匹配结果

Java匹配结果
撒旦の恶 发表于 2024-5-22 10:01
小年轻在奋斗 发表于 2024-5-22 09:30
192761.+\[\"([A-Z]+)\"\]
[mw_shl_code=java,true]try {
        Pattern regex = Pattern.compile("192761.+\\ ...

请问下截图上的是什么工具,蟹蟹!
小年轻在奋斗 发表于 2024-5-22 10:10
撒旦の恶 发表于 2024-5-22 10:01
请问下截图上的是什么工具,蟹蟹!

RegexBuddy
直接在论坛里面可以搜到之前大佬发的
塞北的雪 发表于 2024-5-22 10:30
[JavaScript] 纯文本查看 复制代码
^192761\n([^\n]*\n){2}\["(.+?)"\]
assuller 发表于 2024-5-22 10:33
表达式内有(),好像叫元组?可以多个提取
紫蝶冰澜 发表于 2024-5-22 11:47
[PowerShell] 纯文本查看 复制代码
$s = @"  
            例如:192761  
           -------ABVDDD  
           英文form-data  
           ["C"]  
           aasadfadsf  
           192761  
           -------ABVDDD  
           英文form-data  
           ["B"]  
"@  
  
# 正则表达式,匹配192761后面的任意内容,直到找到大写字母在引号内  
$pattern = '192761.*?\r?\n.*?\r?\n.*?\r?\n.*?\["([A-Z]+)"\]'  
  
# 创建Regex对象  
$regex = New-Object System.Text.RegularExpressions.Regex($pattern, 'Multiline')  
  
# 查找所有匹配项  
$matches = $regex.Matches($s)  
  
# 遍历匹配项并打印捕获组内容  
foreach ($match in $matches) {  
    if ($match.Success) {  
        $capturedText = $match.Groups[1].Value  
        Write-Host "捕获到的文本是: $capturedText"  
    }  
}


屏幕截图 2024-05-22 114728.jpg
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-16 01:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表