【发布时间】:2020-01-10 23:04:25
【问题描述】:
我试图在字符串中的特定单词之前和之后获取 11 个单词。
例如:
and WINSOCK 2.0 in Visual Studio 2012/2013, compiled as Release for use on 64-bit and 32-bit Windows Servers. Client application discovers and validates qualifying Windows Server product
现在这里的挑战是识别像 32 这样的单词,它用连字符连接到单词位。如果我将此单词更改为 32+bit 而不是 32-bit... 正则表达式会识别并在句子前后获得 11 个单词。
我的正则表达式看起来像
Pattern pattern = Pattern.compile("(?<!-)\\b(?<!&)(" + "\\b" + word + "\\b" + ")(?!&)\\b(?!-)(?:[^a-zA-Z'-]+[a-zA-Z'-]+){0,11}");
我寻求任何帮助。
附注* 我无法识别带有连字符的单词
@Solution感谢@Wiktor
\\b(?<!&)\\b" + word + "\\b(?!&)(?:[^a-zA-Z']+[a-zA-Z'-]+){0,11}
谢谢。
【问题讨论】:
-
那么你想让32位被识别为1个字还是2个字?
-
我只想识别单词 32.. 模式应该匹配.. 我不需要完整的单词 {32-bit}。谢谢
-
所以
32-bit应该被识别为32和bit? -
那为什么还要包含连字符呢?
"\\b(?<!&)\\b" + word + "\\b(?!&)(?:[^a-zA-Z']+[a-zA-Z'-]+){0,11}"应该可以工作 -
@Nick 我需要从任何字符串中获取单词 32 的上下文并突出显示 .. 现在在我的情况下 .. 因为字符串中存在 32 它应该匹配并且应用程序级别它将突出显示(仅突出显示第 32 个单词)..