我正在尝试匹配并打破一个典型的电视洪流的标题:
MyTV.Show.S09E01.HDTV.XviD
MyTV.Show.S10E02.HDTV.XviD
MyTV.Show.901.HDTV.XviD
MyTV.Show.1102.HDTV.XviD
我试图将这些字符串分成3个捕获组,每个条目:Title,Season,Episode.
我可以轻松处理前2个:
^([a-zA-Z0-9.]*)\.S([0-9]{1,2})E([0-9]{1,2}).*$
Run Code Online (Sandbox Code Playgroud)
然而,第三和第四个证明很难打破季节和插曲.如果我可以倒退,那会更容易.例如,对于"901",如果我可以向后工作,则将第一个数字作为数字编号,在此之前剩余的任何数字是季节数.
有没有人知道如何将这些字符串分解为相关的捕获组?
我在这里有这个代码:
import re
def get_attr(str, attr):
m = re.search(attr + r'=(\w+)', str)
return None if not m else m.group(1)
str = 'type=greeting hello=world'
print get_attr(str, 'type') # greeting
print get_attr(str, 'hello') # world
print get_attr(str, 'attr') # None
Run Code Online (Sandbox Code Playgroud)
哪个有效,但我不是特别喜欢这一行:
return None if not m else m.group(1)
Run Code Online (Sandbox Code Playgroud)
在我看来,如果我们可以使用三元运算符,这看起来会更清晰:
return (m ? m.group(1) : None)
Run Code Online (Sandbox Code Playgroud)
但那当然不存在.你有什么建议?
在我的Android 2.2.2设备上,画廊看起来非常好.我想在自己的应用程序中做的是按一个按钮,然后显示如下所示的菜单:

这是使用任何标准的Android主题/样式?有没有人知道有这样一个菜单的示例代码?
编辑:我发现用一个Dialog可以模仿这个菜单.为了简化这个例子,我在这个例子中没有使用ListView,只是对话框的一个TextView条目:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#FFF"
android:padding="10dp"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
按下按钮时显示对话框:
Dialog dialog = new Dialog(MyActivity.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.custom_dialog);
TextView text = (TextView) dialog.findViewById(R.id.text);
text.setText("Test option 1");
WindowManager.LayoutParams WMLP = dialog.getWindow().getAttributes();
WMLP.gravity = (Gravity.BOTTOM | Gravity.LEFT);
WMLP.x = 0;
WMLP.y = 0;
dialog.getWindow().setAttributes(WMLP);
dialog.show();
Run Code Online (Sandbox Code Playgroud)
这将创建一个靠近图片菜单的对话框.不过我还有两个问题:
1)如何在对话框底部绘制这个小三角形,如上图所示?
2)应该打开对话框的按钮水平放置在底部按钮栏的中间.因此,当我按下它时,对话框应显示在该按钮的正上方.我想做的是:
WMLP.x = middleButton.getLeft() + (middleButton.getWidth() / 2) - dialog.getWindow().getDecorView().getPaddingLeft() - (WMLP.width / 2);
Run Code Online (Sandbox Code Playgroud)
问题是,WMLP.width是-2.我想原因是布局宽度设置为"wrap_content"(即-2),此时不知道实际宽度.那么,我如何确定对话框的宽度,以便我可以将它同心放在另一个视图上?
更新:我终于找到了一个很好的对话源,如下所示:http: //www.londatiga.net/it/how-to-create-quickaction-dialog-in-android/
这正是我想要的,我现在正在我的应用程序中使用它.
我正在使用存储在samba网络共享上的工作副本。似乎工作正常;ecxept ...
在Windows下,我可以执行“ svn log -l 100 -v”。在工作副本上,并在不到1秒的时间内得到结果。但是,如果我使用TortiseSVN右键单击并显示日志,则在使用> 30Mbps的网络带宽时它会挂起几分钟。
Tortise处理网络存储的工作副本是否需要已知问题或配置?
我想将oracle数据库的字符集从'WE8MSWIN1252'更改为'AL32UTF8'
我尝试从链接执行以下步骤(http://download.oracle.com/docs/cd/B10501_01/server.920/a96529/ch10.htm#1009580):
使用SHUTDOWN IMMEDIATE或SHUTDOWN NORMAL语句关闭数据库.执行数据库的完整备份,因为无法回滚ALTER DATABASE CHARACTER SET语句.填写以下声明:
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET AL32UTF8;
Run Code Online (Sandbox Code Playgroud)
但是当我执行上述语句时,我收到以下错误
SQL错误:ORA-12712:新字符集必须是旧字符集的超集
任何人都可以帮我解决这个问题.
我有java背景,正在学习python。我很快就需要使用继承,我想找出每个继承的工作方式之间有什么主要区别。我在网上看了一下,发现了一些关于两者之间差异以及要注意什么的信息,我发现 python 支持多重继承,但我想知道任何其他特定于继承的差异。我不需要被告知语法(除非有一些我真的需要注意的东西),我已经看过它了,我会接受的。
Python 不是 Java
Python 类:Java 程序员的多重继承
Python
我无法真正找到我正在寻找的内容,即差异概述和需要注意的内容。
我有一个包含多行的表,它们具有相同的数据.我曾经SELECT DISTINCT得到一个独特的行,它工作正常.但是当我使用ORDER BY与SELECT DISTINCT它给了我未排序的数据.
有人能告诉我有多么独特吗?
根据它选择行的标准?
我正在使用asp.net和开发基于Web的应用程序ajax.今天我遇到了一个问题,同时在启用ajax的webform下拖放基于ajax的组件.
错误消息是
The operation could not be completed. Invalid FORMATETC structure
Run Code Online (Sandbox Code Playgroud)
如果您的答案是汇编,那么请让我知道哪些汇编这样的问题(具体关于汇编)
我一直在搜索,但我找不到任何方法来存储对某个变量中另一个变量的引用.我正在尝试创建一个类来撤消用户完成的事情;
class UndoAction
{
public object var;
public object val;
public UndoAction(ref object var, object val)
{
this.var = var;
this.val = val;
}
public static List<UndoAction> history = new List<UndoAction>();
public static void AddHistory(ref object var, object val)
{
history.Add(new UndoAction(ref var, val));
}
}
Run Code Online (Sandbox Code Playgroud)
我想你可以看到我在这里想要实现的目标.
我跑的问题;
this.var = var;
Run Code Online (Sandbox Code Playgroud)
不存储引用,而是存储引用的'var'的值.我如何存储引用本身,所以我可以简单地运行;
this.var = val;
Run Code Online (Sandbox Code Playgroud)
在我的情况下,"撤消"一个动作?
我想为XSD类型创建一个限制,只允许大小为0到64的元素,一个点和另一个大小为0到64的元素.我试过这个,但没有成功.
<xs:simpleType name="myString_Type">
<xs:restriction base="xs:string">
<xs:pattern value="^([a-zA-Z\-]){0-64}.$([a-zA-Z\-]){0-64}"/>
</xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)
谢谢.