Python Regx排除字母数字字符串中的某些字母

时间:2017-08-19 01:23:59

标签: python-3.x

如何使用正则表达式匹配一个只能包含17个字母数字字符的字符串,并且不包含字母' q' '○'和'我'。 又名,只有字母和数字,但不是' q' '○'和'我'。

可以分别在python中完成两个条件:

  1. [A-Z0-9] {17}
  2. [^一种或多种QoI]
  3. 所以除了指定有效的字符间隔或者使用AND将两个条件组合在一起之外,在python中有任何更优雅的方法,你可以实际指定你想要包含的字符,同时排除那些你不想要的字符。 Java中的[a-z0-9&&[^qoi]]

    (例如,我想排除10个随机字母,指定每个间隔[a-bd-eh-ow-......]

    会非常繁琐

    如果没有这种方式,我只能接受python正则表达式的现实。

    感谢您的帮助! 埃里克

2 个答案:

答案 0 :(得分:2)

你可以把任何你想要的东西放在方括号中。因此,例如,要匹配除q,o和i之外的任何字母,您可以使用:

<!DOCTYPE html>
<html lang="en">

<head>
  <title>Test</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <link rel="stylesheet" href="css.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>

<body>

  <div id="wrapper">

    <div id="intro">
      This is the intro text
    </div>
    <div class="topRow">
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
    </div>

    <div id="myModal1" class="modal fade" tabindex="-1">
      <div class="modal-dialog modal-lg">
        <div class="modal-content">
          <div class="modal-header">Header 1</div>
          <div class="modal-body">Body 1</div>
          <div class="modal-footer">Footer 1</div>
        </div>
      </div>
    </div>
    <div id="myModal2" class="modal fade" tabindex="-1">
      <div class="modal-dialog modal-lg">
        <div class="modal-content">
          <div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title">Modal title</h4></div>
          <div class="modal-body"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque ut nisl egestas, pharetra eros nec, feugiat est. Vivamus lobortis mauris libero, sit amet consectetur nisl ultrices quis. Nullam eu dolor sed est elementum dictum sed eget nibh. Sed mauris eros, tincidunt eget orci non, euismod commodo metus. Nullam cursus at justo et viverra. Vestibulum id diam placerat, ultrices lorem nec, suscipit libero. Nulla condimentum urna at lectus vestibulum, a ullamcorper urna consectetur. Donec maximus, ex non lobortis sagittis, dui lorem consequat velit, nec euismod tortor tortor ac velit. In eu dignissim tellus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis auctor ex lacus, nec posuere dui accumsan eget.</p><p>Quisque sollicitudin quis ex ac ullamcorper. Vivamus ipsum mi, scelerisque vitae risus a, varius mollis tellus. Sed in massa vehicula, molestie tellus a, ornare urna. In volutpat velit vel neque commodo, et pellentesque ipsum rutrum. Phasellus felis arcu, fringilla ac feugiat sit amet, sollicitudin sed dui. Duis eget vestibulum mi, quis elementum mi. In hac habitasse platea dictumst. Maecenas aliquam lacinia nisl, a malesuada orci sollicitudin nec. Nullam vitae pharetra turpis, id eleifend risus. Nulla id placerat augue, ac efficitur justo.</p><p>Duis semper dui vel est commodo tristique. Ut hendrerit imperdiet mattis. Vestibulum feugiat vulputate mollis. Aliquam erat volutpat. Pellentesque placerat eros a vestibulum laoreet. Vestibulum at enim vulputate, cursus ex sit amet, suscipit metus. Morbi hendrerit non lacus nec imperdiet. Donec sit amet odio sit amet ligula rhoncus laoreet non eget tortor. In et nunc diam. Ut a ipsum ullamcorper, luctus turpis id, congue massa. Sed sit amet vulputate purus. Phasellus ac vulputate tortor. Quisque vitae ultrices odio.</p></div>
        </div>
      </div>
    </div>
  </div>

  <div id="wrapper">
    <div class="tableRow">
      <button type="button" class="Category">Category 1</button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal2" style="background: url(http://lorempixel.com/101/101/);"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
    </div>
  </div>

  <div id="wrapper">
    <div class="tableRow">
      <button class="Category">Category 2</button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/101/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal2" style="background: url(http://lorempixel.com/102/101/);"> </button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
    </div>
  </div>

  <div class="bottomRow">
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
      <button type="button" class="square" data-toggle="modal" data-target="#myModal1" style="background: url(http://lorempixel.com/100/100/)"></button>
    </div>
</body>

</html>

您还可以指定多个范围,以便更明显地跳过哪些字符:

#wrapper{
  display: inline-block;
  white-space: nowrap;
}
.square{
  height: 100px; 
  width: 100px; 
  border: none; 
  border-radius:0px;
  vertical-align: top;
  margin-left: -5px;
}
.Category{
  height: 100px; 
  width: 200px; 
  border: none; 
  border-radius:0px; 
  background: white;
  text-align: right;
  vertical-align: top;
}

.topRow{
  margin: 10px 100px 50px 200px;
  display: inline-block;
  white-space: nowrap;
}
.tableRow{
  margin: 0px 100px 0px 0px;
  display: inline-block;
  white-space: nowrap;
}
.bottomRow{
  margin: 50px 100px 50px 200px;
  display: inline-block;
  white-space: nowrap;
}
.wrapper span {
   float: left;
   clear: left;
}

.modal-dialog {
   width: 75%;
   height: 70%;
}
.modal-body{
    height: 250px;
    overflow-y: auto;
    white-space: pre-wrap;
}

可能有更优雅的方法,但基本概念是相同的:只在[0-9abcdefghjklmnprstuvwxyz] 内放置你想要匹配的字符。

答案 1 :(得分:1)

以下是两个选项:

分别检查每个条件

使用两个正则表达式并确保它们都匹配。这与你的java示例非常相似。

import re
test_case = "asdFghijalkdjflkjsd"
re.match("^[A-Za-z0-9]{17}$", test_case) and re.match("^[^qoi]+$", test_case)

明确列出合法

列出所有合法的字母数字字符,应排除q,i和o

import re
test_case ="12345a78901234567"
re.match("^[ABCDEFGHJKLMNPRSTUVWXYZabcdefghjklmnprstuvwxyz0-9]{17}$", test_case)

当然,这可以使用范围来缩小,例如A-HJ-NPR-Z等。