这是我的正则表达式:
([+-]*)(\\d+)\\s*([a-zA-Z]+)
Run Code Online (Sandbox Code Playgroud)
问题是,我想匹配给定的输入,但它可以"链接".因此,当且仅当整个模式在这些事件之间没有任何重复时(空白除外),我的输入应该是有效的.(只有一个匹配或多个匹配彼此相邻,它们之间可能有空格).
有效的例子:
1day
+1day
-1 day
+1day-1month
+1day +1month
+1day +1month
Run Code Online (Sandbox Code Playgroud)
无效的例子:
###+1day+1month
+1day###+1month
+1day+1month###
###+1day+1month###
###+1day+1month###
Run Code Online (Sandbox Code Playgroud)
我的情况下,我可以使用matcher.find()方法,这将做的伎俩,但它将接受这样的输入:+1day###+1month这对我无效.
有任何想法吗?这可以通过多个IF条件和多个检查开始和结束索引来解决,但我正在寻找优雅的解决方案.
编辑
下面的评论中建议的正则表达式^\s*(([+-]*)(\d+)\s*([a-zA-Z]+)\s*)+$将部分地解决这个问题,但如果我在下面的代码中使用它,它会返回与我正在寻找的结果不同的结果.问题是我不能使用,(*my regex*)+因为它会匹配整个事情.
该解决方案是与整个输入相匹配^\s*(([+-]*)(\d+)\s*([a-zA-Z]+)\s*)+$,然后使用([+-]*)(\\d+)\\s*([a-zA-Z]+)与matcher.find()和matcher.group(i)提取每场比赛和他的团体.但我一直在寻找更优雅的解决方案.
我有一些问题,太多线程尚未完成.我认为队列命令.join()只是关闭队列而不是使用它的线程.
在我的脚本中,我需要检查280k域,并为每个域获取他的MX记录列表,并获得服务器的IPv6地址(如果有).
我使用了线程,并感谢他们脚本的速度快了很多倍.但是有一个问题,虽然有加入()队列,活着的线程数量在不断增长,直到错误发生的通知着创建任何新的线程(OS的限制吗?).
当我从数据库中检索新域时,如何在每个For循环后终止/关闭/停止/重置线程?
线程类定义......
class MX_getAAAA_thread(threading.Thread):
def __init__(self,queue,id_domain):
threading.Thread.__init__(self)
self.queue = queue
self.id_domain = id_domain
def run(self):
while True:
self.mx = self.queue.get()
res = dns.resolver.Resolver()
res.lifetime = 1.5
res.timeout = 0.5
try:
answers = res.query(self.mx,'AAAA')
ip_mx = str(answers[0])
except:
ip_mx = "N/A"
lock.acquire()
sql = "INSERT INTO mx (id_domain,mx,ip_mx) VALUES (" + str(id_domain) + ",'" + str(self.mx) + "','" + str(ip_mx) + "')"
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
print "MX" , '>>' , ip_mx, ' :: ', str(self.mx)
lock.release() …Run Code Online (Sandbox Code Playgroud) 我需要解释这个奇怪的运算符=+(等于加)
示例#1:
Double a = new Double(5);
Double b = new Double(10);
a += b
Run Code Online (Sandbox Code Playgroud)
结果:
a=15.0
b=10.0
Run Code Online (Sandbox Code Playgroud)
示例#2:
Double a = new Double(5);
Double b = new Double(10);
a =+ b
Run Code Online (Sandbox Code Playgroud)
结果:
a=10.0
b=10.0
Run Code Online (Sandbox Code Playgroud)
我理解第一个例子,但请解释一下这个=+运算符在例子 2 中做了什么。
另一个有趣的事实是,这些运算符是有效且可编译的:+=、-=、*=、/=
但是这两个中的任何一个都不会编译:=*、=/