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"]                   {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 + '"]');
}

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;// 获取["里面英文大写"]
    console.log(result);
} else {
    console.log("未找到匹配的内容");
}

wapjsx 发表于 2024-5-22 08:15

我来用python语言实现楼主的功能,系采纳!哈哈~~~
import re
s = '''
            例如:192761
         -------ABVDDD
         英文form-data
         ["C"]
         aasadfadsf
         192761
         -------ABVDDD
         英文form-data
         ["B"]
'''
myc = '.*192761.*\n.*\n.*\n.*?\[\"(*)\"\]'
finda = re.findall(myc,s)
print(type(finda), finda)


输出的结果如下:
<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++;
    }


    std::string result;
    while (pos < text.length()) {
      result += text;
      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.+\[\"(+)\"\]
try {
        Pattern regex = Pattern.compile("192761.+\\[\\\"(+)\\\"\\]", 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
}

reobj = re.compile(r"192761.+\[\"(+)\"\]", re.DOTALL)
if reobj.search(subject):
        # Successful match
else:
        # Match attempt failed



撒旦の恶 发表于 2024-5-22 10:01

小年轻在奋斗 发表于 2024-5-22 09:30
192761.+\[\"(+)\"\]
try {
        Pattern regex = Pattern.compile("192761.+\\ ...

请问下截图上的是什么工具,蟹蟹!

小年轻在奋斗 发表于 2024-5-22 10:10

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

RegexBuddy
直接在论坛里面可以搜到之前大佬发的

塞北的雪 发表于 2024-5-22 10:30

^192761\n([^\n]*\n){2}\["(.+?)"\]

assuller 发表于 2024-5-22 10:33

表达式内有(),好像叫元组?可以多个提取

紫蝶冰澜 发表于 2024-5-22 11:47

$s = @"
            例如:192761
         -------ABVDDD
         英文form-data
         ["C"]
         aasadfadsf
         192761
         -------ABVDDD
         英文form-data
         ["B"]
"@

# 正则表达式,匹配192761后面的任意内容,直到找到大写字母在引号内
$pattern = '192761.*?\r?\n.*?\r?\n.*?\r?\n.*?\["(+)"\]'

# 创建Regex对象
$regex = New-Object System.Text.RegularExpressions.Regex($pattern, 'Multiline')

# 查找所有匹配项
$matches = $regex.Matches($s)

# 遍历匹配项并打印捕获组内容
foreach ($match in $matches) {
    if ($match.Success) {
      $capturedText = $match.Groups.Value
      Write-Host "捕获到的文本是: $capturedText"
    }
}

页: [1] 2 3
查看完整版本: 正则表达试 求助