社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Emma

Emma 最近创建的主题
Emma 最近回复了
5 年前
回复了 Emma 创建的主题 » MongoDB查询以查找可能具有查询字符串变体的文档

编辑: 你可以简单地使用 $regex 在查询中使用表达式 ^ABC(?:.*?)\\d+$

MongoDB文档示例:

db={
  "products": [
    {
      "name": "product A",
      "product": "ABC-123"
    },
    {
      "name": "product B",
      "product": "ABC123"
    },
    {
      "name": "product C",
      "product": "ABC-123"
    }
  ]
}

查询:

db.products.find({
  "product": {
    "$regex": "^ABC(?:.*?)\\d+$"
  }
})

演示: https://mongoplayground.net/p/WdqTg7LCZIk


我们也许能找到这个问题的表达式。或许,让我们从一个类似于以下的表达式开始:

product:\s+"(.+?)"

Demo

product:\s+" 作为左边的边界,我们收集任何字符,然后从右边将其与 " .

const regex = /product:\s+"(.+?)"/gm;
const str = `{
  name: "something"
  product: "ABC-123"
}`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

或者我们可以将其扩展到我们喜欢捕获而不是捕获的内容:

(?:product:\s+")(.+?)(?:")

DEMO

enter image description here

5 年前
回复了 Emma 创建的主题 » 如何在Python2.7中循环重复替换模式匹配?

我猜你可能只是想在你的表达式中添加单词边界,还有 + 好像不见了:

\s\b[0-9]+-[0-9]+\b

但不确定。

测试

import re

l = [' 525-11 Prof.Dr.F.J.A.Kreuzer, Nijmegen  onderzoek met betrekking tot de fysiologie van ademhaling en bloedsomloop op grote hoogte  17.500\n', 
' 527-7 Dr.G.Buyze, Utrecht  onderzoek naar het kopermetabolisme bij geesteszicken  s 9.400\n', 
' 527-8  Prof. Dr. Elisabeth P.Steyn Parv\xc3\xa9, Utrecht onderzoek naar de betekenis van thiaminc voor de synthese van vetzuren in het dierlijk lichaam  s 5.400\n', 
' 532-7 Dr.J.K. Sch\xc3\xb6nfeld, Rotterdam  onderzoek over de rol van de L-fase van bacteri\xc3\xabn bij chronische en recidiverende ziekten (1962)  f 3.100\n', 
' 532-8  A.G.Schuitemaker, Heiloo  onderzoek naar het lytisch vermogen van bacteriofagen voor mycobacteri\xc3\xabn f 2.000\n', 
' 542-13 Dr.B.Leijnse en Dr.H.M. van Praag, Rotterdam  bestudering van het werkingsmechanisme van de anti-depressieve hydrazinen, in bio chemisch en psychiatrisch-psychologisch opzicht  f 16.000\n', 
' 547-7 Dr.H.K.A. Visser, Groningen  onderzoek over de werking van het antidiuretische hormoon en de regulatie van de centrale afgifte van dit hormoon gedurende de kinderleeftijd (1962)  s 9.600\n', 
' 548-4 Dr.F.Schwarz, Utrecht  onderzoek naar de invloed van Exophthalmos Producing Substance op bindweefsel  s 13.000\n', 
' 562-8 Prof. Dr.J.Droogleever Fortuyn, Groningen  onderzoek naar bouw en functie van de middenhersenen (1960-1962) f 13.100\n', 
' '
]

regex = r"(\s\b[0-9]+-[0-9]+\b)"
subst = "\\1\\n"


for index,item in enumerate(l):
    l[index] = re.sub(regex, subst, item)

print(l)

输出

['525-11\n教授F.J.A.Kreuzer,Nijmegen onderzoek met betrekking 范阿德姆哈林酒店 17.500\n','527-7\n Buyze博士,Utrecht onderzoek naar het kopermetabolisme bij geesteszicken s 9.400\n','527-8\n教授。 Elisabeth P.Steyn Parv,乌得勒支onderzoek naar de betekenis van 蒂亚明·沃德·辛瑟斯·范·维特祖伦 5.400\n','532-7\n Dr.J.K.SchÃ131; nfeld,鹿特丹onderzoek over de rol van de L-fase van bacterià ziekten(1962)f 3.100\n','532-8\n A.G.Schuitemaker,海洛 onderzoek naar het lytisch vermogen van细菌学 分枝杆菌素f 2.000,542-13 鹿特丹普拉格最佳范赫特范德 生物化学中的抗抑郁肼 精神病学心理学家opzicht f 16.000\n','547-7\n Dr.H.K.A。 维瑟,格罗宁根·昂德佐克,在德韦金·范赫特·安蒂乌雷蒂街 管理中心管理中心 gedurende Kindereleftijd(1962)第9.600节,第548-4节 F.Schwarz博士,乌得勒支onderzoek naar de invloed van眼球突出症 生产物质op bindweefsel s 13.000\n','562-8\n Prof。 Dr.J.Drooglever Fortuyn,Groningen onderzoek naar bouw en functie博士 范德米登赫森恩(1960-1962)f 13.100,'''

表达式在 regex101.com ,如果您希望浏览/简化/修改它,则在 this link ,如果愿意的话,可以查看它与一些示例输入的匹配情况。

5 年前
回复了 Emma 创建的主题 » 简单的python正则表达式不能按预期工作

此表达式可能会提取这些所需的值:

([0-9]+)\s*-\s*(.*)

Demo

测试

import re

print(re.findall("([0-9]+)\s*-\s*(.*)", "#232 - Hello There"))

输出

[('232', 'Hello There')]
5 年前
回复了 Emma 创建的主题 » regex模式在python中有效,但在c中无效#

我想也许 ^ $ 没有必要。

sln 建议使用以下表达式:

(?<=^|\r?\n)\bTEXT\b

会起作用的 c# 或者蟒蛇。

我不太确定为什么它在python中可以正常工作, ^(TEXT ?)$ 对于这种情况,模式基本上不应该在python中工作,但显然我是不对的。

DEMO

测试

using System;
using System.Text.RegularExpressions;

public class Example
{
    public static void Main()
    {
        string pattern = @"(?=^|\r?\n)\bTEXT\b";
        string substitution = @"MTEXT";
        string input = @"TEXT Some data before TEXT some data after

TEXTY Some data before  TEXT 

TEXT Some data before TEXT some data after

TEXT Some data before  TEXT NOTTEXT ";
        RegexOptions options = RegexOptions.Multiline;

        Regex regex = new Regex(pattern, options);
        string result = regex.Replace(input, substitution);
    }
}
5 年前
回复了 Emma 创建的主题 » python regex查找双引号中包含变量的字符串

此表达式可能适用于:

OnUploadCompleted\([0-9]+\s*,\s*\"\/(.+?)\"

我们想要的结果是在这个捕捉组 (.+?) .

Please see the demo for additional explanation.

试验

import re

regex = r"OnUploadCompleted\([0-9]+\s*,\s*\"\/(.+?)\""

test_str = ("<script type=\"text/javascript\">\n"
    "(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e)\n"
    " {};d=d.replace(/.*?(?:\\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();\n"
    "window.parent.OnUploadCompleted(0,\"/userfiles/abc.txt\",\"abc.txt\", \"\") ;</script>")

matches = re.finditer(regex, test_str, re.MULTILINE)

for matchNum, match in enumerate(matches, start=1):

    print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))

    for groupNum in range(0, len(match.groups())):
        groupNum = groupNum + 1

        print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
5 年前
回复了 Emma 创建的主题 » python在两个字符之间替换一个字符并保持rest

这个表情,

(§[^§\r\n]*),([^§\r\n]*§)

作为替代,

\1;\2

可能只是在这里工作。

试验

import re

string = """
§Bandra(West);Mumbai§
§Bandra(West),Mumbai§
§,§
Bandra(West),Mumbai§
"""

print(re.sub(r'(§[^§\r\n]*),([^§\r\n]*§)', r"\1;\2", string))

产量

§Bandra(West);Mumbai§
§Bandra(West);Mumbai§
§;§
Bandra(West),Mumbai§

如果您希望探索/简化/修改表达式,则 在的右上面板上解释 regex101.com . 如果你愿意,你 也可以观看 this link ,如何匹配 对照一些样本输入。