Python regex to match punctuation at end of string

后端 未结 3 1803
伪装坚强ぢ
伪装坚强ぢ 2021-02-15 17:40

I need to match if a sentence starts with a capital and ends with [?.!] in Python.

EDIT It must have [?.!] only at end but allo

相关标签:
3条回答
  • 2021-02-15 17:48

    I made it working for myself, and just for clarification or if other people have the same problem this is what did the trick for me:

    re.match('^[A-Z][^?!.]*[?.!]$', sentence) is not None
    

    Explanation: Where ^[A-Z] looks for a Capital at start

    '[^?!.]*' means everything in between start and end is ok except things containing ? or ! or .

    [?.!]$ must end with ? or ! or .

    0 讨论(0)
  • 2021-02-15 17:48

    Use the below regex.

    ^[A-Z][\w\s]+[?.!]$
    

    Regex demo: https://regex101.com/r/jpqTQ0/2


    import re
    s = ['This sentence is correct.','this sentence does not start with capital','This sentence is not correct']
    
    # What I tried so for is:
    for i in s:
        print(re.match('^[A-Z][\w\s]+[?.!]$', i) is not None)
    

    Output:

    True
    False
    False
    

    Working code demo

    0 讨论(0)
  • 2021-02-15 18:05

    Your regex checks for a single digit in the range [A-Z]. You should change to something like:

    ^[A-Z].*[?.!]$
    

    Change the .* to whatever you want to match between the capital letter and the punctuation at the end of the string.

    0 讨论(0)
提交回复
热议问题