regex 避免在单词中间匹配单词

qlvxas9a  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(165)

假设我有四个字符串:

s1 = ghgJirafa/com/Activity.java 
s2 = /santel/data/jira/JiraSDK.java   <- match "jira" in "jira" or "JiraSDK"
s3 = /priv/data/configJira.java       <- match "Jira" in "configJira"
s4 = /data/privJiracom/config.java
s5 = /a/data/conJiraig.java

我想写 * regex * 来匹配字符串s2s3中的jira,而不是s1s4中的jira,因为在**s1,s4和s5中,'jira'**在单词 * 的中间,我想避免它。我也使用了 * 大小写不敏感 * 来匹配s3
这是我的正则表达式:((?i)jira).*\.java
注意,

ghgJirafa   <- doesn't match, Jira in the middle of the ghgJirafa word
jira        <- match, jira is a whole word
JiraSDK     <- match, jira is in the beginning of the word JiraSDK
configJira  <- match, Jira is in the end of the word configJira
privJiracom <- doesn't match, Jira is in the middle of privJiracom
conJiraig   <- doesn't match, Jira is in the middle of conJiraig

我在StackOverFlow和Google上搜索过,但没有找到这样的答案。我也在不同的不和谐频道上问过,但没有得到任何回应。

62lalag4

62lalag41#

我建议

(?i)(\bjira|jira\b).*\.java

其中我们匹配\bjira- * 字边界 * \b,然后是jirajira在开头),或者jira\b-jira,然后是 * 字边界 *(jira在字的结尾)。
您可能需要添加$(?i)(\bjira|jira\b).*\.java$),以确保\.java位于字符串的最末尾
fiddle

相关问题