如何检查字符串中是否有特殊字符或数字但不在该字符串的末尾?

时间:2017-10-30 18:03:47

标签: python string python-3.x

是否可以检查string characters numbersstring是否包含特殊characters"()1234567890!?_@#$%^&*.,'"

characters

但同时忽略这些特殊string位于"Hell,o" is False ",.Hello" is False "Whatc!hadoi66n" is False "Hello," is True "Hello,!'#" is True end 的所有结果?

示例:

import { Directive , Input , ViewContainerRef , TemplateRef } from '@angular/core';

@Directive({
  selector: '[appUnless]'
})
export class UnlessDirective {

  @Input() set appUnless(condition : boolean) {
    if(!condition) {
      this.vcRef.createEmbeddedView(this.templateRef)
    } else {
      this.vcRef.clear();      
    }
  }

  constructor(private templateRef: TemplateRef<any> , private vcRef: ViewContainerRef) { }

}

2 个答案:

答案 0 :(得分:2)

您可以使用str.rstrip从字符串末尾删除所有尾随特殊字符,然后检查结果字符串和特殊字符集是否不相交。

def f(string, special="()1234567890!?_@#$%^&*.,'"):
    return {*string.rstrip(special)}.isdisjoint(special)
In [5]: f("Hell,o")
Out[5]: False

In [6]: f("Hello!")
Out[6]: True

In [7]: f("Hello,!'#")
Out[7]: True

答案 1 :(得分:1)

这个正则表达式:

import re
re.match(r'[^()1234567890!?_@#$%^&*.,']*[()1234567890!?_@#$%^&*.,']*$', string)

正则表达式的第一部分要求字符串以不包含特殊字符的字符序列开头。第二部分最后匹配一个可能为空的特殊字符序列。

DEMO