查找带有破折号/连字符且没有相同正则表达式的单词?[关闭]

Finding words with dash/hyphen and without in same regex? [closed]

提问人:Hank K 提问时间:8/12/2021 最后编辑:Hank K 更新时间:8/13/2021 访问量:158

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

2年前关闭。

请举几个例子:

查找:\(([A-Z][A-ZA-Z-\S])\) -- (KI-WOO)
查找:\(([A-Z][A-ZA-Z\S]
)\) -- (醉)

如何找到具有相同正则表达式的 (Ki-Woo) 和 (Drunk) ?

另外,如何找到应该有空格的实例?

<b>先生。史密斯 ------> <b> 史密斯先生

应该是 <b> 和 MR. 和 SMITH 之间的空格

提前致谢 !

编辑:

\\([A-Z]*(?:(\h*|-)[A-Z0-9][a-z]*)*\)

仍然不确定如何将结果传递给 NP++ 中的 Replace: 字段? ?

(1 美元)为史密斯先生做了一个类似的发现:下面是史密斯先生:但不是上面的那个(Ki-Woo);(醉酒);(女 1)

查找:替换:
([A-Z][A-Z\.\s]*\:+)\<font color\=\"\#FFA500\"\>\<b\>($1)\<\/b\>\<\/font\>

不知道如何($ 1)....观看更多UTube

正则表达式 记事本++

评论

1赞 Toto 8/12/2021
你能正确地格式化你的问题吗?请参见:stackoverflow.com/help/formatting

答:

0赞 Quach Tri Dat 8/12/2021 #1

对于您的第一个问题:

(\w+-)?[\w-]+

上面的模式匹配带破折号和不带破折号的单词,只不过它还捕获第一个单词后跟破折号,并将它们捕获到一组中。然后,您可以检查第一组是否有任何值。如果是这样,则该单词的格式为 ,否则不带破折号。请注意,这仅适用于破折号出现在连续字母中间的非常基本的情况,如果您想要更具体的正则表达式模式,则需要对其进行修改,以便满足您的需求。something-something

对于您的第二个问题,以下模式可能是一个工作示例。

[>\.]\w

这适用于您发布的案例,因为它匹配一个大于号或一个点,后跟任何字母。

同样,要获得满足特定需求的正则表达式模式,您需要确定要搜索的模式,并从那里构建正则表达式模式。

评论

0赞 Hank K 8/12/2021
谢谢Quach Tri Dat
0赞 Haji Rahmatullah 8/12/2021 #2

不确定你的问题.. 但也许这段代码就是你要找的..

查找:
这将检测两个 & 被括号包围,
但括号不会是其中的一部分......
(?<=\()Drunk|ki-Woo(?=\))drunkki-Woo()

关于史密斯先生和史密斯先生......
只需在空格后添加问号,
例如。 会检测到他们俩....
Mr. ?Smith

评论

0赞 Hank K 8/12/2021
醉酒|ki-woo ...不应该是 FIND 的一部分:因为它是我正在搜索的......对不起,我不清楚。将这个(醉酒)改成这个醉酒:替换我有作品
1赞 Toto 8/12/2021 #3

对于第一个问题,请使用:\([A-Z)[a-z]*(?:-[A-Z][a-z]*)*\)

演示和解释

对于第二个:

\h*MR\.\h*[A-Z]+

演示和解释

评论

0赞 Hank K 8/12/2021
谢谢 Toto,现在我了解了网站 regex101 的工作原理.哈哈....这两个答案正是我想要的......👍👍
0赞 Hank K 8/13/2021
\([A-Z]*(?:(\h*|-)[A-Z0-9][a-z]*)*\)..... 仍然不确定如何将结果传递给 NP++ 中的 Replace: 字段? ?观看更多 UTube ....这在类似的 Find 上有效:但不适用于这个。'查找: 史密斯先生: ([A-Z][A-Z\.\s]*\:+) 替换:\<字体颜色\=\“\#FFA500\”\>\<b\>($1)\<\/b\>\<\/font\>\([A-Z]*(?:(\h*|-)[A-Z0-9][a-z]*)*\)
0赞 Hank K 8/13/2021 #4
Find:     ([A-Z][A-Z\.\s]*\:+)                  
Replace:  \<font color\=\"\#FFA500\"\>\<b\>($1)\<\/b\>\<\/font\>

From:     MR. SMITH:
To:       <font color="#FF4500"><b>MR. SMITH:</b></font>

不知道为什么($1)适用于上述内容,但不适用于以下内容:

Find:     \([A-Z)[a-z]*(?:-[A-Z][a-z]*)*\)
Replace:  \<font color\=\"\#FFA500\"\>\<b\>$1\:\<\/b\>\<\/font\>

From:     (Ki-Woo)
To:       <font color="#FF4500"><b>Ki-Woo:</b></font>

正如你所看到的,我仍然在婴儿步骤中......曾经看过比尔·默里(Bill Murray)的“鲍勃呢”(What About Bob)......我看过的最有趣的电影。因此,对于如何获取 Find: 的结果并将其拉入 Replace,我基本上一无所知:

我不得不举的例子:

Find:       (?<=\[)([^]]+)      ;[ across two lines ]
Replace:    \U\1                ;Uppercase
Replace:    \L\1                ;Lowercase

将方括号替换为圆括号

Find:       \[([^A-Z].+?)\]                 ;[dramatic music]
Replace:    \($1\)                      ;(dramatic music)

评论

0赞 Hank K 8/13/2021
也非常困惑这个论坛是如何运作的......67 年 ole noob ...罗特福尔毛