在python中使用正则表达式在冒号或括号之前提取字符串

时间:2018-08-06 18:00:55

标签: python regex

我正在尝试从以下字符串中提取字符串$a= "google,yahoo,Bing" ; $b= "Bing is Good " ; $parts = explode(',', $a); foreach ($parts as $part) { if(strpos($b, $part) !== false) { echo "true, " ; // I Need True... } } 。 我需要使用适用于所有三种情况的正则表达式。

        XWPFDocument document = new XWPFDocument();
        XWPFParagraph tmpParagraph = document.createParagraph();
        XWPFRun tmpRun = tmpParagraph.createRun();
        tmpParagraph.setAlignment(ParagraphAlignment.CENTER);
        tmpRun.setText("<<highcourt>>");
        tmpRun.setFontSize(18);
        XWPFParagraph tmpParagraph1 = document.createParagraph();
        XWPFRun tmpRun1 = tmpParagraph1.createRun();
        tmpParagraph1.setAlignment(ParagraphAlignment.LEFT);
        tmpRun1.setText("W.P NO.");
        tmpRun1.setFontSize(18);
        tmpParagraph1.setIndentationLeft(85);

以下代码适用于<?php function gen_code_alpha() { $alpha = ''; for ($i = 0; $i <= 9; $i++) { $alpha .= $i; } // This attaches alphabets from 'a' to 'z' to our $alpha for ($i = 65; $i <= 122; $i++) { $alpha .= chr($i); } } function gen_code($len = 1) { gen_code_alpha(); global $alpha; $strlen = strlen($alpha); $code = ''; for ($k = 0; $k < $len; $k++) { $i = $rand(0, $strlen -1);// now wanna randomly generate the code $code .= substr($alpha, $i, 1); } return $code; } function gen_license_key() { $licenseKey = gen_code(4) . '-' . gen_code(4) . '-' . gen_code(4) . '-' . gen_code(4) . '-' . gen_code(2); } gen_license_key(); echo $licenseKey; muscle pain。但这不适用于string1 = 'A1 muscle pain: immunotherapy' string2 = 'A2B_45 muscle pain: topical medicine e.g. ....' string3 = 'A2_45 muscle pain (pain): topical medicine e.g. ....' 。我得到的总是string1。谁能帮助我。我用不同的表情尝试了很多次,但不知道怎么做。

string2

2 个答案:

答案 0 :(得分:3)

您可以将表达式缩短为:

^A\S+\s([^:(]*)(?=:|\s\()
  • ^A声明字符串开头的位置。
  • \S+任何非空白字符。
  • \s空格字符。
  • ([^:(]*)捕获组。匹配并捕获(括号或]括号以外的任何内容。
  • (?=:|\s\()正向搜索:或空白,后跟(

here现场试用。


Python代码段:

import re
string1 = 'A1 muscle pain: immunotherapy'
string2 = 'A2B_45 muscle pain: topical medicine e.g. ....'
string3 = 'A2_45 muscle pain (pain): topical medicine e.g. ....'

print(re.match(r'^A\S+\s([^:(]*)(?=:|\s\()',string3).group(1))

答案 1 :(得分:1)

尝试以下模式:^[\dA-Z_]+ ([^\(:]+)

它从开头的[\dA-Z_]+开始(注意锚点^),然后是空格。 现在,开始捕获组,直到遇到不需要的字符之一:[^\(:]。 您可以在其中添加更多“不需要的”字符来更改正则表达式以进行不同的匹配。

第一个捕获组就是您想要的。

Demo

您可以尝试使用此模式在第三次比赛后删除空间:^[\dA-Z_]+ ([\w ]+)(?=(:| \())See demo.