Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式匹配后跟空格或标点符号的单词_Python_Regex - Fatal编程技术网

Python 正则表达式匹配后跟空格或标点符号的单词

Python 正则表达式匹配后跟空格或标点符号的单词,python,regex,Python,Regex,如果我有印度这个词 火柴 “印度!”“印度!”“印度” 不匹配的“印第安”“印第安纳” 基本上,我希望匹配字符串,但不希望匹配包含在另一个字符串中的字符串 在做了一些研究之后,我从 exp=“(?尝试: r'\bindia\W*\b' 看 要忽略案例: re.search(r'\bindia\W*\b', my_string, re.IGNORECASE).group(0) 尝试: r'\bindia\W*\b' 看 要忽略案例: re.search(r'\bindia\W*\b',

如果我有印度这个词

火柴
“印度!”“印度!”“印度”

不匹配的
“印第安”“印第安纳”

基本上,我希望匹配字符串,但不希望匹配包含在另一个字符串中的字符串

在做了一些研究之后,我从


exp=“(?尝试:

r'\bindia\W*\b'


要忽略案例:

re.search(r'\bindia\W*\b', my_string, re.IGNORECASE).group(0)
尝试:

r'\bindia\W*\b'


要忽略案例:

re.search(r'\bindia\W*\b', my_string, re.IGNORECASE).group(0)
您可以使用:

import re

s = "india."
s1 = "indiana"
print(re.search(r'\bindia[.!?]*\b', s))
print(re.search(r'\bindia[.!?]*\b', s1))
输出:

<re.Match object; span=(0, 5), match='india'>
None

没有一个
您可以使用:

import re

s = "india."
s1 = "indiana"
print(re.search(r'\bindia[.!?]*\b', s))
print(re.search(r'\bindia[.!?]*\b', s1))
输出:

<re.Match object; span=(0, 5), match='india'>
None

没有一个
这将捕获除数字和字母以外的任何内容

这将捕获除数字和字母以外的任何内容
^印度[^a-zA-Z0-9]$

^
-正则表达式从印度开始

[^a-zA-Z0-9]
-不是a-z,a-z,0-9

$
-结束Regex

试试这个
^印度[^a-zA-Z0-9]$

^
-正则表达式从印度开始

[^a-zA-Z0-9]
-不是a-z,a-z,0-9


$
-结束正则表达式

假设目标是匹配字符串中的给定单词(例如,
“india”
),前提是该单词的前面或后面既没有字符串中不存在的字符。
“,!;”
您可以使用以下正则表达式:

(?<![^ .,?!;])india(?![^ .,?!;\r\n])
(?

Python的正则表达式引擎执行以下操作

(?<!             # begin a negative lookbehind
  [^ .,?!;]      # match 1 char other than those in " .,?!;"
)                # end the negative lookbehind
india            # match string
(?!              # begin a negative lookahead   
  [^ .,?!;\r\n]  # match 1 char other than those in " .,?!;\r\n"
)                # end the negative lookahead
(?

请注意,如果
india
位于一行的末尾,则反向前瞻中的字符类包含
\r
\n

假设目标是匹配给定的单词(例如,
“india”
)在字符串中,如果单词前面或后面没有字符串
“,!;”
中没有的字符,则可以使用以下正则表达式:

(?<![^ .,?!;])india(?![^ .,?!;\r\n])
(?

Python的正则表达式引擎执行以下操作

(?<!             # begin a negative lookbehind
  [^ .,?!;]      # match 1 char other than those in " .,?!;"
)                # end the negative lookbehind
india            # match string
(?!              # begin a negative lookahead   
  [^ .,?!;\r\n]  # match 1 char other than those in " .,?!;\r\n"
)                # end the negative lookahead
(?

请注意,如果
india
位于一行末尾,则反向前瞻中的字符类包含
\r
\n

如果还希望匹配标点符号,则可以使用,其中可以匹配除单词字符或换行符以外的任何字符

(?<!\S)india[^\w\r\n]*(?!\S)
(?
  • (?在左侧断言一个whitspace bounadry
  • 印度
    逐字匹配
  • [^\w\r\n]
    匹配除单词字符或换行符以外的任何字符的0+倍
  • (?!\S)
    在右侧声明一个whitspace边界

如果您还想匹配标点符号,可以使用,其中可以匹配除单词字符或换行符以外的任何字符

(?<!\S)india[^\w\r\n]*(?!\S)
(?
  • (?在左侧断言一个whitspace bounadry
  • 印度
    逐字匹配
  • [^\w\r\n]
    匹配除单词字符或换行符以外的任何字符的0+倍
  • (?!\S)
    在右侧声明一个whitspace边界

发布您迄今为止尝试过的代码?啊,很抱歉我之前发布了它,但没有意识到其中一些代码被切断了
re.findall(r)(印度)[\s\,?!;],“印第安纳,印度,印度!印度”)====>['india','india']
您的问题并没有告诉我们您是否希望在字符串
*india9
或许多其他字符串中匹配
india
。此外,“基本上,我希望匹配字符串,但不希望匹配包含在另一个字符串中的字符串。“是没有意义的。与其用例子来阐述你的问题,不如先用文字来准确地陈述你的问题。下面是一个可能的解释示例:“我希望在字符串中匹配给定的单词,前提是该单词的前面和后面都没有不在字符串中的字符
”,;“
”。发布您迄今为止尝试过的代码?啊,很抱歉我之前发布了它,但没有意识到其中一些代码被切断了。
re.findall(r)(印度)[\s\,?!;],“印第安纳,印度,印度!印度.印度”)====>['india','india']
您的问题没有告诉我们您是否希望在字符串
*india9
或许多其他字符串中匹配
india
。此外,“基本上,我希望匹配字符串,但不希望匹配包含在另一个字符串中的字符串。”是没有意义的。与其用例子来阐述你的问题,你需要先用文字来准确地陈述你的问题。下面是一个可能的解释示例:“我希望在字符串中匹配给定的单词,前提是该单词的前面和后面都没有不在字符串中的字符
”,;“
”。我在我的python3终端上运行了这个,我正在为这两个->@sy89检查获取匹配现在我在我的python3终端上运行了这个,我正在为这两个->@sy89检查获取匹配现在#4,OP的
exp
表达式向我暗示他/她并没有试图匹配双引号,双引号只是用于定义字符串elled“MATCHES”和“NON-MATCHES”。也就是说,字符串
“india”
由五个字母组成。@CarySwoveland再次阅读问题,我认为你是对的:-)显然,我真的专注于所有的双引号。我有类似的学习障碍,误读问题以使它们更有趣。#4,OP的
exp
表达式向我表明,他/她并没有试图匹配双引号,双引号仅用于定义标记为“匹配”的字符串和“非匹配项”。也就是说,字符串
“india”
由五个字母组成。@CarySwoveland再次阅读问题我认为你是对的:-)显然,我真的专注于所有的双引号。我有类似的学习障碍,误读问题以使它们更有趣。