在同一个正则表达式中查找带有 dash/hyphen 和不带 dash/hyphen 的单词?

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

有以下例子:

查找:\(([A-Z][A-Za-z-\s])\) -- (Ki-Woo)
查找:\(([A-Z][A-Za-z\s]
)\) -- (Drunk)

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

此外,我如何找到应该有 SPACE 的实例?

MR.SMITH ------> 先生。史密斯

应该是 和 MR 之间的 space。和史密斯

提前致谢!

编辑:

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

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

The ($1) 在类似的 Find: below 上为 MR 工作。 SMITH:但不是上面那个和 (Ki-Woo);(Drunk);(Woman 1)

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

不确定 ($1) ....观看更多 UTube

第一个问题:

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

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

对于你的第二个问题,以下模式可能是一个有效的例子。

[>\.]\w

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

同样,要拥有满足您特定需求的 RegEx 模式,您需要确定要搜索的模式,并从那里构建 RegEx 模式。

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

查找:(?<=\()Drunk|ki-Woo(?=\))
这将检测到 drunkki-Woo 被方括号 ()
包围 但括号不会成为其中的一部分...

关于 Mr.Smith 和史密斯先生 ...
space,
后面加问号即可 例如。 Mr. ?Smith 将同时检测到它们....

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

Demo & explanation

第二个:

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

Demo & explanation

Find:     ([A-Z][A-Z\.\s]*\:+)                  
Replace:  \<font color\=\"\#FFA500\"\>\<b\>()\<\/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\>\:\<\/b\>\<\/font\>

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

如您所见,我仍在婴儿学步中....曾经和比尔·默里一起看过“鲍勃怎么样”...我看过的最有趣的电影。所以我基本上不知道如何获取 Find: 的结果并将其放入 Replace:

我不得不参考的例子:

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

用圆括号替换方括号

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