java - 检查两个字符串是否与字母、数字和特殊字符匹配

标签 java python string compare character

您将如何编写一个接受两个字符串并在它们匹配时返回 true 的函数(不使用正则表达式)。

约束条件如下:

  • 字符串 1(要匹配的文本)将包含字母和数字。
  • 字符串 2,模式,将是字母、数字、.*,其中 . 表示将考虑字母或数字作为匹配项,* 表示前一个字符重复 0 次或多次。

例如:

Text: Facebook
Pattern: F.cebo*k
returns True

最佳答案

对此并不感到特别自豪(@JoranBeasley 的回答是最好的),但这将在没有正则表达式的情况下(似乎)起作用:

def Matcher(pattern, text):
  comp = zip(pattern, text)
  for i, vals in enumerate(comp):
    if vals[0] != vals[1]:
      if vals[0] == '.' and vals[1].isalnum():
        continue
      elif vals[0] == '*' and vals[1] == comp[i-1][0]:
        continue
      else:
        return False
  return True

print 'F.cebo*k -> Facebook'
print Matcher('F.cebo*k', 'Facebook')

print 'St.c.koverflow -> Stackoverflow'
print Matcher('St.c.koverflow', 'Stackoverflow')

# And for nostalgia...
print 'St.ckoverfl*w -> Stackoverfllw'
print Matcher('St.ckoverfl*w', 'Stackoverfllw')

我确定它充满了错误(比如字符串以 * 开头),但我的代码通常是错误的。

关于java - 检查两个字符串是否与字母、数字和特殊字符匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13144590/

相关文章:

java - "string"和字符串 x = "string"有什么区别

python - 在不同的函数中使用字符串的名称

java - 在H2控制台中找不到用JAVA创建的H2数据库?

java - 是否可以在不关闭流的情况下对元素进行分组?

python - 在对底层 Python 进行补丁级别升级后,virtualenv 会继续工作吗?

python - 鼠标监听 on_move 事件

python - Pandas 使用查找字典更新列中的值

Java - 在两个字符串之间切换

java - 如何使用 JAXB 从 xsd 生成实现 Serializable 接口(interface)的 Java 类?

java - 查找嵌套在 a4j :repeat tag in JSF tree 中的第 n 个组件