我有一个Python程序要求用户输入像shell一样,如果我检测到一些特定的关键字,我想进入一些特定的函数.
问题是,我想避免做大量的if和else if.通常在C中为了避免这种情况,我使用了一个函数指针数组,我while用它strcmp来旅行并用来检查输入.
如果有可能的话,我想知道如何在Python中做到这一点.
到目前为止,这是我的正则表达式:
^((([a-zA-Z0-9_\/-]+)[ ])+((\bPHONE_NUMBER\b)|(\b(IP|EMAIL)_ADDRESS\b))[ ]*[;]*[ ]*)+$
Run Code Online (Sandbox Code Playgroud)
;如果我(([a-zA-Z0-9_\/-]+)[ ])+((\bPHONE_NUMBER\b)|(\b(IP|EMAIL)_ADDRESS\b))在第一个之后找到另一个,我想至少制作一个强制性的.
/tests/phone PHONE_NUMBER ; /tests/IP IP_ADDRESS 应该匹配.
/tests/phone PHONE_NUMBER /tests/IP IP_ADDRESS 不应该匹配.
我怎样才能做到这一点?
我正在编写一个shell.当我像这样执行它cat /dev/urandom | valgrind ./myshell来运行一些测试,看看我是否有任何段错误或其他错误时,valgrind有时告诉我,我在这行有一个Invalid Write函数my_wordcpytab[++j] = str[*i];
它不会每次都发生,但它确实发生了,我只是不明白为什么.这是我的代码:
static int count_words(char *str, char *sep)
{
int quote;
int words;
int i;
i = -1;
if (count_quotes(str) == -1)
return (0);
words = 0;
quote = 0;
while (str[++i] != '\0')
{
if (str[i] == '"')
{
if (quote == 0)
quote = 1;
else
quote = 0;
}
if (quote == 0
&& (is_cinside(sep, str[i]) == 0 && str[i] != '\t' …Run Code Online (Sandbox Code Playgroud) 我的一个指针在我尊重它之后被改变并且影响它一个值.我不明白为什么,特别是因为该函数中的代码多次运行但大部分时间都在运行.这是代码:
typedef struct s_freeList
{
int sSize;
struct s_freeList *next;
struct s_freeList *back;
int *eSize;
} t_freeList;
void *addNode(void *addr, size_t size)
{
t_freeList *freeList;
// Working stuff
freeList = (t_freeList *)addr;
freeList->sSize = size * -1;
freeList->next = ((t_freeList *)g_startAddr)->next;
freeList->back = g_startAddr;
((t_freeList *)g_startAddr)->next->back = freeList;
((t_freeList *)g_startAddr)->next = freeList;
// Not working stuff
printf("addr = %p\nsize = %d\n", addr, (int)size);
freeList->eSize = addr + size - 4;
printf("freelist->esize = %p\n", freeList->eSize);
*(freeList->eSize) = size * -1;
printf("freelist->esize …Run Code Online (Sandbox Code Playgroud)